linux中字段截取、替换等awk及sub/gsub使用

gsub函数则使得在所有正则表达式被匹配的时候都发生替换

gsub(regular expression, subsitution string, target string);简称 gsub(r,s,t)

sub匹配第一次出现的符合模式的字符串,相当于 sed ‘s//’ 。
gsub匹配所有的符合模式的字符串,相当于 sed ‘s//g’

实例一
将|分割第二个域中的数字去掉
echo “0001|20081223efskjfdj|EREADFASDLKJCV” |awk -F ‘|’ ‘BEGIN{ OFS=”|” } {gsub(/[0-9]+/,”“, 2);print 0}’
0001|efskjfdj|EREADFASDLKJCV

实例二
/分割,取出snapshots后面知道倒数第四个之间的域(其中/的数不确定,所以不大方便直接使用awk 6 7,$8来直接取,使用字段截取),.隔开 com.netfinworks.authorize
示例

/Users/yfan/Downloads/dsc20170801_jar/snapshots/com/netfinworks/authorize/authorize-service/1.0.0-SNAPSHOT/authorize-service-1.0.0-SNAPSHOT.jar

先设置一个变量

yfandeMacBook-Pro:pbs yfan$ test=/Users/yfan/Downloads/dsc20170801_jar/snapshots/com/netfinworks/authorize/authorize-service/1.0.0-SNAPSHOT/authorize-service-1.0.0-SNAPSHOT.jar

用Linux中的符号截断(##)去掉com前面的部分

yfandeMacBook-Pro:pbs yfan$ echo ${test##*snapshots/}

结果

com/netfinworks/authorize/authorize-service/1.0.0-SNAPSHOT/authorize-service-1.0.0-SNAPSHOT.jar

在用awk结合gsub去掉后面的部分(倒数第一、第二、第三域)

yfandeMacBook-Pro:pbs yfan$ echo ${test##*snapshots/}|awk -F'/' '{gsub("/"$(NF-2)"/"$(NF-1)"/"$NF,"");print}'

结果

com/netfinworks/authorize

最后再用sed用.替换/,完成目标

yfandeMacBook-Pro:pbs yfan$ echo ${test##*snapshots/}|awk -F'/' '{gsub("/"$(NF-2)"/"$(NF-1)"/"$NF,"");print}'|sed  's/\//./g'

结果

com.netfinworks.authorize

gsub说明参考:
http://blog.sina.com.cn/s/blog_67e34ceb0100ybvg.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值