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