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

関連情報