在 awk 中指定行?

在 awk 中指定行?

我将使用这个 awk 脚本从我的文本文件中删除重复的行:

awk '!x[$0]++'

但是,我想指定它们将在哪些行上运行。

可能有 10000 个重复项,但我只想删除第 10020 到 10030 行中的重复项。

就我而言,它是 24 到 655。如果它是我可以的单词{$24, $655}(或类似的东西),那就更容易了。但我不确定在这种情况下如何指定行。如果它很重要,我使用 awk 版本 20070501。

答案1

你可以这样做:

awk -v low=24 -v high=655 'NR >= low && NR <= high{if (!a[$0]++) print; next};{print}' file

或者更好

 awk -v low=100 -v high=200 'NR < low || NR > high || !a[$0]++' test.file

相关内容