我有一个大文本文件,其中DATA字出现的次数超过10000次。我想知道如何进行条件替换,所以它第一次出现在文档中,它被改为NO1,第二次出现在NO2,依此类推,使用bash。我正在考虑使用bash的一些复杂的脚本,但我猜想必须有一个更简单的方法。
答案 0 :(得分:5)
perl -pe 's/DATA/ "NO" . ++$n /ge' file_in > file_out
答案 1 :(得分: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
我保留原始版本以显示替代(但过度)的方法; - )
我希望这会有所帮助。