1

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

4

2 回答 2

2

每当您在 awk 脚本中将“the”替换为“it”时,都会增加一个计数器。然后通过将计数器放在 END 块中来打印 awk 脚本末尾的计数器。

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

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

但是您要做的只是简单地计算单词/模式“the”在原始 .cvs 文件中出现的次数,您可以简单地执行以下操作:

grep -c "the" input.csv

或取决于您的 .csv 格式:

grep -c " the," input.csv
于 2012-11-29T07:38:58.337 回答
2

据我所知, awk 不能自动给出替换计数。我们必须以某种方式手动对数字求和。例如,用你的“the”->“it”:

gawk '{x+=gsub("the","it");print} END{print "total changes:"x}' file.csv
于 2012-11-29T09:37:52.167 回答