在Linux上实现字符串剪切大致分为两种,使用命令实现剪切,使用工具实现剪切。 具体的剪切方法如下
剪切a,#可以删除左边的字符,保留右边的字符
从左边的开头开始,删除以前的所有字符
str=http://www.Baidu.com/index.html
echo ${str#*/} # right first /
输出:
/www.baidu.com/index.html
剪切b,##可以删除左边的字符,保留右边的字符
从最右边的中删除以前的所有字符
str=http://www.Baidu.com/index.html
echo ${str##*/} # rightest /
输出:
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、正向区间剪切到结束
截取第七个字的开头到结尾
str=http://www.Baidu.com/index.html
echo ${str:7}
输出:
www.baidu.com/index.html
g、反向区间切取
剪切倒数第0到第7个字符的前五个
str=http://www.Baidu.com/index.html
echo ${str:0-7:5}
输出:
ex.ht
h、反向剪切,直至结束
从倒数第十个字符到字符串末尾
str=http://www.Baidu.com/index.html
echo ${str:0-10}
输出:
index.html
I、使用cut命令实现字符串的剪切
cut [选项]
可选:----b----字节
-c ----文字
-f ----域
文件已创建。 内容如下。
[ linuxidc @ localhost3_ 26 ] $ cat file
abcdefg
1234567
poiuytr
以下是使用cut片段的示例。
[ linuxidc @ localhost3_ 26 ] $ cat文件| cut-B3
C
3
I
[ linuxidc @ localhost3_ 26 ] $ cat文件| cut-B- 3
abc
123
波伊
[ linuxidc @ localhost3_ 26 ] $ cat文件| cut-B3 -
cdefg
34567
iuytr
[ linuxidc @ localhost3_ 26 ] $ cat文件| cut-B3-5
cde
345
iuy
[ linuxidc @ localhost3_ 26 ] $ cat文件| cut-B3-5,7
cdeg
3457
iuyr
对于单字节,-b和-c的工作方式相同,但如果文本中出现中文,-c可以正确输出一个汉字,而使用-b选项输出的是乱码。 因为中文是2字节。 为了解决此问题,通常将-b选项和-n选项结合使用。 -n用于告诉cut要剪切的是n字节字符。
说明域的作用。 /etc/passwd文件包含所有用户信息,但如果您仔细理解,您会发现每个长字符串都由:分隔。 此文件中的数据被认为是由:分隔的域。 对字段分隔符使用-d选项,指定-f之后的数字格式与-b完全匹配。 【cut的域分隔符只能指定一个字符】
123456789101112 [ linuxidc @ localhost3_ 26 ] $ cat/etc/passwd|head-n5
root : x :03360033600336003360 root :/root :/bin/bash
bin : x :13360133601336013360 bin :/bin :/sbin/nolog in
daemon : x :23360233602336023360 daemon :/sbin :/sbin/nolog in
ADM : x :43360 ADM :/var/ADM :/sbin/nolog in
LP : x 3360433607336073360 LP :/var/spool/lpd :/sbin/nolog in
[ linuxidc @ localhost3_ 26 ] $ cat/etc/passwd|head-n5|cut-d :-f1
路线
瓶子
魔神兽
adm
lp
多嘴多舌,请看下面的例子
[linuxidc@localhost 3_26]$ ps
PID TTY TIME CMD
5630 pts/2 00:00:00 bash
5739 pts/2 00:00:00 ps
[ linuxidc @ localhost3_ 26 ] $ PS|cut-B4
I
3
4
4
虽然只有3行,但cut中会出现4行内容。 其原因是,每个命令实际上是父bash单独创建的进程,cut也不例外。 内置命令除外。