我有一个大文本文件,其中 DATA 一词出现超过 10000 次。我想知道如何进行条件替换,所以第一次出现在文档中时它被更改为 NO1,第二次更改为 NO2,依此类推,使用 bash。我正在考虑使用 bash 的一些复杂脚本,但我想肯定有更简单的方法。
问问题
602 次
2 回答
5
perl -pe 's/DATA/ "NO" . ++$n /ge' file_in > file_out
于 2012-05-17T19:08:49.217 回答
1
awk '{
for (i=1;i<=NF;i++) {
if ($i == "DATA") printf("%s%s", "NO"++n, OFS);
else printf("%s%s", $i, OFS)
if (i==NF) printf "\n"
}
}' file > outFile
或者正如格伦杰克曼正确指出的那样,这可以归结为
awk '{for (i=1; i<=NF; i++) if ($i=="DATA") $i = "NO" ++n} {print}' file > outFile
我保留我的原始版本以展示另一种(但过度劳累)的方法;-)
我希望这有帮助。
于 2012-05-17T18:32:28.150 回答