0
我想要awk改变给定的模式,如果匹配或返回原来的行。这里是我的代码awk条件是否匹配模式
printf 'hello,"hru, bro"\nhi,bye\n' | gawk 'match($0, /"([^"]+)"/, m) {if (m[1] == "") {print $0} else {print gsub(/,/,"",m[1])}}'
-> 1
我希望'匹配以米为m返回匹配模式[1]和GSUB替换所有“” [1]时,有一个匹配。因此结果应该是
-> hello,hru bro\nhi,bye
我在这里错过了什么?
UPDATE
据汤姆评论我gensub
取代gsub
,但我现在得到以下结果:
-> gawk: cmd. line:1: (FILENAME=- FNR=1) warning: gensub: third argument `hru, bro' treated as 1
hello"hru, bro"
好的,谢谢,我应该检查文档并使用'gensub'来代替。所以我删掉了这个问题,因为它很笨。 – user3639782
其实它并没有解决问题,我已经相应地更新了我的帖子。 – user3639782
您现在将错误的参数传递给gensub(),就像警告消息告诉您的一样,但由于您没有向我们显示该代码,因此我们无法告诉您更多。 –