3

我有一个大文本文件,其中 DATA 一词出现超过 10000 次。我想知道如何进行条件替换,所以第一次出现在文档中时它被更改为 NO1,第二次更改为 NO2,依此类推,使用 bash。我正在考虑使用 bash 的一些复杂脚本,但我想肯定有更简单的方法。

4

2 回答 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 回答