awk gsub正则后只打印匹配到的
可以使用awk中的match函数来实现只打印匹配到的部分。
示例如下:
假设有一个文件test.txt,内容如下:
hello world
hello kitty
hi world
hi kitty
现在我们想要替换所有以hello开头的行,并只打印替换后的部分,可以使用以下命令:
awk '/^hello/{gsub(/hello/, "hi"); if(match($0, /^hi(.*)/, arr)) print arr[1]}' test.txt
输出结果为:
world
kitty
解释:
/^hello/:匹配以hello开头的行gsub(/hello/, "hi"):将匹配到的hello替换为hiif(match($0, /^hi(.*)/, arr)):使用match函数匹配以hi开头的部分,并将匹配结果存入数组arr中print arr[1]:只打印arr数组中第一个元素,即匹配到的部分。
原文地址: https://www.cveoy.top/t/topic/5KK 著作权归作者所有。请勿转载和采集!