XからYまでの行にのみ表示される重複行を削除し、ファイルを所定の位置に変更するにはどうすればよいですか?
たとえば、10行から20行の重複行のみを削除したい場合です。
ベストアンサー1
GNUを使用するawk
(4.1.0以降のinplace
拡張1):
gawk -i /usr/share/awk/inplace.awk '
NR >= 10 && NR <= 20 {
if ($0 in seen) next
seen[$0]
}
{print}' ./file
または以下を使用してperl
:
perl -ni -e 'print if $. < 10 or $. > 20 or !$seen{$_}++' ./file
複数のファイル処理:
gawk -i /usr/share/awk/inplace.awk '
BEGINFILE{delete seen}
FNR >= 10 && FNR <= 20 {
if ($0 in seen) next
seen[$0]
}
{print}' ./*.txt
または以下を使用してperl
:
perl -ni -e '
print if $. < 10 or $. > 20 or !$seen{$_}++;
if (eof) {close ARGV; undef %seen}' ./*.txt
^使用しないでください-i inplace
現在の作業ディレクトリから最初に拡張機能をgawk
ロードしようとすると、誰かがそのディレクトリにマルウェアを植えた可能性があります。システムに付属の拡張プログラムのパスは異なる場合があります。出力を参照してください。inplace
inplace
inplace.awk
inplace
gawk
gawk 'BEGIN{print ENVIRON["AWKPATH"]}'