shell脚本的字符处理tr和cut和字符串替换${parameter//pattern/string}

目录

1. tr

2.${parameter//pattern/string} 

3.cut命令


对于TR和CUT命令都可以用管道直接级联使用:先给出例子如下:

echo x.yy.x@x@s%a | tr "." " "|tr x y|cut -d @ -f 3|tr % " "
>> s a

tmparray=(`echo x.yy.x@x@s%a | tr "." " "|tr x y|cut -d @ -f 3|tr % " "`)
echo ${tmparray[*]}
>>s a

#可以将结果赋值给一个数组,这个数组就是分割后的字符数组

1. tr

tr 指令从标准输入设备读取数据,经过字符串转译后,将结果输出到标准输出设备。

需要注意的是tr只能处理标准输入设备的数据。

tr [-cdst][--help][--version][第一字符集][第二字符集]  
tr [OPTION]…SET1[SET2] 

具体参数含义可参考Linux tr命令https://www.runoob.com/linux/linux-comm-tr.htmlicon-default.png?t=LA92https://www.runoob.com/linux/linux-comm-tr.html

echo 1,2,3|tr , -
>>1-2-3

echo 1,2,3|tr , " "
>>1 2 3

echo 1,2,3_2:434 |tr ",_:" "@$%"
>>1@2@3$2%434

从上面的结果可以看出tr可以将指定的set1中多个字符同时替换成set2中对应位置的字符。再替换过程中是将属于set1中的每个字符都替换,而不是字符串替换和sed这一点并不相同。

该命令主要是有一些有用的字符集。如大小写替换

echo ferggwef |tr a-z A-Z
>>FERGGWEF

2.${parameter//pattern/string} 

这个操作的替换是替换一个字符串,一次只能替换一个。

echo $tmp
>>1,2,3_2:434
echo ${tmp//:/%}
>>1,2,3_2%434

echo ${tmp//,_:/@$%}
1,2,3_2:434

从以上的结果可以发现和tr之间的不同,也可以测试下面的用法

${varible##*string} 从左向右截取最后一个string后的字符串
${varible#*string}从左向右截取第一个string后的字符串
${varible%%string*}从右向左截取最后一个string后的字符串
${varible%string*}从右向左截取第一个string后的字符串
“*”只是一个通配符可以不要

3.cut命令

该命令可以对文件和标准输入进行处理。

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

具体参数可参考:

Linux cut命令https://www.runoob.com/linux/linux-comm-cut.htmlicon-default.png?t=LA92https://www.runoob.com/linux/linux-comm-cut.html

#-d后面是分割符,下面的例子将1:2_3.4:5xx:6分成了4段
#1  2_3.4 5xx 6
echo 1:2_3.4:5xx:6|cut -d : -f 1- #-f表示显示字段从哪里到哪里 1-从第一个到最后一个
>>1:2_3.4:5xx:6

echo 1:2_3.4:5xx:6|cut -d : -f 2,4
>> 2_3.4:6

echo 1:2_3.4:5xx:6|cut -d : -f 2
>> 2_3.4

#从上面结果看出显示多个字段时中间还是有分割符,只取其中一个字段时没有分割符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值