关于shell编程(3):awk中的sub和gsub

您所在的位置:网站首页 awk是什么语言 关于shell编程(3):awk中的sub和gsub

关于shell编程(3):awk中的sub和gsub

2023-09-16 14:51| 来源: 网络整理| 查看: 265

sub和gsub的区别

awk '{sub(/aa/,"cc");print}' file    用cc替换aa awk '{sub(/aa/,"cc",$1); print}' file    第一个域内用cc替换aa 把上面sub换成gsub就表示在满足条件的域里面替换所有的字符。

比如如下文件内容:

aa我们 aa我们 aaaa一起 aaaa一起 回家 aa回家

使用上述的awk的sub的第一种2个参数的用法,可以得到如下结果

cc我们 aa我们 #只改变坐起第一个aa ccaa一起 aaaa一起 回家 cc回家 #第一个字段中没有aa,就继续寻找下一个字段,直到找到第一个aa并替换

使用sub的第二种3参数用法,结果如下

cc我们 aa我们 ccaa一起 aaaa一起 回家 aa回家 #第一个字段中没有aa直接结束本行的替换

如果使用gsub,得到的结果分别如下

#不加$1 cc我们 cc我们 cccc一起 cccc一起 #全部替换 回家 cc回家 #添加$1 cc我们 aa我们 cccc一起 aaaa一起 回家 aa回家 #第一个域内全部替换,其他域不管

awk的sub函数用法: sub函数匹配指定域/记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。 如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的时候。格式如下: sub (regular expression, substitution string): sub (regular expression, substitution string, target string) 实例: $ awk '{ sub(/test/, "mytest"); print }' testfile $ awk '{ sub(/test/, "mytest", $1); print }' testfile       第一个例子在整个记录中匹配,替换只发生在第一次匹配发生的时候。       第二个例子在整个记录的第一个域中进行匹配,替换只发生在第一次匹配发生的时候。 如要在整个文件中进行匹配需要用到gsub gsub函数作用如sub,但它在整个文档中进行匹配。格式如下:                   gsub (regular expression, substitution string)                   gsub (regular expression, substitution string, target string) 实例: $ awk '{ gsub(/test/, "mytest"); print }' testfile $ awk '{ gsub(/test/, "mytest", $1); print }' testfile       第一个例子在整个文档中匹配test,匹配的都被替换成mytest。       第二个例子在整个文档的第一个域中匹配,所有匹配的都被替换成mytest。 另外, 只有当记录中的域有改变的时候 ,指定0FS变量才有用, 如果记录中的域无变化, 指定OFS产生不了实际效果。 awk -F'|' -v OFS='|' '{ gsub(/[0-9]/, "", $3); print $0; }' data.txt    将把第三个域中所有数字都去掉。 另外,对于数字的匹配,可以使用十六进制。 awk -F'|' -v OFS='|' '{ gsub(/[/x30-/x39]/, "", $3); print $0; }' data.txt 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3