字符串截取方法可以在Linux下实现

    Linux      下实现     字符      串截取,大体上可以分为两种,使用命令实现截取,使用工具实现截取。具体截取方式如下:

    字符串截取方法可以在Linux下实现_设计制作_接口/总线/驱动  

a、#截取,可以实现删除左边字符,保留右边字符
从左边第一个开始,删除及之前的所有字符
str=http://www.b     ai   du.com/index.html
echo ${str#*/}        # right fi     rs   t /
输出:
/www.baidu.com/index.html

b、##截取,可以实现删除左边字符,保留右边字符
从最右边的开始,删除及之前的所有字符
str=http://www.baidu.com/index.html
echo ${str##*/}        # righ     te   st /
输出:
index.html

c、%截取,可以实现删除右边字符,保留左边字符
从右边第一个开始删除及右边的所有字符
str=http://www.baidu.com/index.html
echo ${str%/*}        # left firft /
输出:
http://www.baidu.com

d、%%截取,可以实现删除右边字符,保留左边字符

从左边第一个开始删除及右边的所有字符
str=http://www.baidu.com/index.html
echo ${str%%/*}        # leftest /
输出:
http:

e、区间截取
截取第0~6个字符
str=http://www.baidu.com/index.html
echo ${str:0:6}
输出:
http:/

f、正向区间截取到结束
截取从第7个字符开始到结束
str=http://www.baidu.com/index.html
echo ${str:7}
输出:
www.baidu.com/index.html

g、反向区间截取
截取倒数第0到第7个字符的前5个
str=http://www.baidu.com/index.html
echo ${str:0-7:5}
输出:
ex.ht

h、反向截取,到结束
从倒数第10个字符截取到字符串结束
str=http://www.baidu.com/index.html
echo ${str:0-10}
输出:
index.html

i、使用cut命令实现字符串截取
cut [选项]
选项:    -b  ----> 字节
-c  ----> 字符
-f  ----> 域
已创建一个文件,内容如下:
[linuxidc@localhost 3_26]$ cat file
abcdefg
1234567
poiuytr

使用cut截取的例子如下:
[linuxidc@localhost 3_26]$ cat file | cut -b 3
c
3
i
[linuxidc@localhost 3_26]$ cat file | cut -b -3
abc
123
poi
[linuxidc@localhost 3_26]$ cat file | cut -b 3-
cdefg
34567
iuytr
[linuxidc@localhost 3_26]$ cat file | cut -b 3-5
cde
345
iuy
[linuxidc@localhost 3_26]$ cat file | cut -b 3-5,7
cdeg
3457
iuyr

对于单字节而言,-b和-c似乎作用是一样的,但是如果文本内出现中文的情况下,-c是可以正确输出一个汉字的,但使用-b选项输出的却是乱码,因为一个中文是两个字节。为了解决这个问题,通常-b选项和-n选项配合使用,-n用于告诉cut要截取的是n字节字符。

下面解释域<-f>的作用。在/etc/passwd文件中保存了所有的用户信息,仔细了解过的话,可以发现,每一长串是通过 : 分隔开的。我们可以认为该文件中的数据是以 : 分隔不同的域。指定域分隔符使用的是 -d 选项,-f后跟的数字格式和-b完全一致。cut的域分隔符只能是一个字符】
123456789101112 [linuxidc@localhost 3_26]$ cat /etc/passwd | head -n 5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[linuxidc@localhost 3_26]$ cat /etc/passwd | head -n 5 | cut -d : -f 1
root
bin
daemon
adm
lp

多余说一点,看下面的例子
[linuxidc@localhost 3_26]$ ps
    PI   D TTY     TI   ME CMD
5630 pts/2    00:00:00 bash
5739 pts/2    00:00:00 ps
[linuxidc@localhost 3_26]$ ps | cut -b 4
I
3
4
4

明明只有三行,却cut出了四个行内容,原因就在与每个命令其实都是父bash单独创建的一个进程,cut也不例外(内置命令除外)。



39
107
0
95

相关资讯

  1. 1、张新成《光芒》获得发行许可证《变成你的那一天》爱奇艺预约渠道已开启5156
  2. 2、吴磊秦昊今起赴《沙海》探险千年迷局露冰山一角536
  3. 3、韩庚搭档法国男神新片《寻找罗麦》戛纳发海报1018
  4. 4、杨紫新戏将播,下一部戏《我的莫格利男孩》将合作马天宇988
  5. 5、不止蜘蛛侠2,蜘蛛侠的情人也要开拍了!这也太性感了吧1188
  6. 6、《王牌情敌》明日上映黄宗泽扮丑坦言不怕牺牲5175
  7. 7、32岁出演《西游记》被熟知,搭档米雪演太监走红,今三获视帝!790
  8. 8、18年前的《少年张三丰》隐藏了众多美女,谁认出林心如了?4028
  9. 9、《战狼3》演员大换血巨星云集,吴京竟然成了客串2642
  10. 10、阿娇陪丈夫度假归来,身穿睡衣登上飞机,一脸傲娇的样子好可爱887
全部评论(0)
我也有话说
0
收藏
点赞
顶部