有没有办法让awk跟踪它所做的更改

时间:2012-11-29 07:36:37

标签: bash csv awk

我想知道是否有办法让awk输出它所做的更改次数,或以某种方式跟踪它的变化。例如,如果有一个.csv文件,其中我使用awk将单词“the”替换为“it”,是否有办法让awk输出它找到了多少次并替换了“the”内部的.csv文件?我一直在搜索谷歌+本网站的其余部分,但一直无法找到任何东西,不知道我是否只是以错误的方式或类似的东西工作,如果有人可以帮助我这个虽然我真的很感激,谢谢!

2 个答案:

答案 0 :(得分:2)

每当你在awk脚本中用“it”替换“the”时,增加一个计数器。然后在awk脚本末尾打印计数器,方法是将它放在END块中。

一个简单的例子,您只是在第1列中替换“the”:

awk 'BEGIN{FS=OFS=","}
     {if ($1 == "the") {$1 = "it"; counter++; print}}
     END{print counter}' input.csv

但是您要做的只是计算原始.cvs文件中出现的单词/模式“the”的次数,您可以这样做:

grep -c "the" input.csv

或取决于.csv的格式:

grep -c " the," input.csv

答案 1 :(得分:2)

据我所知,awk无法自动计算替换次数。我们必须以某种方式手动汇总数字。例如,使用“the” - >“it”:

gawk '{x+=gsub("the","it");print} END{print "total changes:"x}' file.csv
相关问题