私はファイルを持っています:
key value
blah blah
blah blah
blahblah
man1 boy1
blah blah
man1 boy2
man1 boy1
重複した行を削除するには、次の手順を実行します。
awk '/man1/ { print $1,$2} ' file | awk '!x[$0]++'
このコマンドは最初の行を取得し、他の行は無視します。
man1 boy1
man1 boy2
しかし、最後の行を除くすべての行を無視したいと思います。
man1 boy2
man1 boy1
Rameshが言ったように、私は次のようなものが欲しい。
cat filename
blah blah
blah blah
blahblah
man1 boy1
blah blah
man1 boy2
man1 boy1
man1 boy2
man1 boy3
man1 boy4
man1 boy2
希望の出力
man1 boy1
man1 boy3
man1 boy4
man1 boy2
ベストアンサー1
tac filename |awk '/man1/ { print $1,$2} '| awk '!x[$0]++' | tac
テスト
もっと具体的な入力でテストしたいです。だから私のテストは次のようになります。
cat filename
blah blah
blah blah
blahblah
man1 boy1
blah blah
man1 boy2
man1 boy1
man1 boy2
man1 boy3
man1 boy4
man1 boy2
ここで上記のコマンドを実行し、出力を取得します。
tac filename |awk '/man1/ { print $1,$2} '| awk '!x[$0]++' | tac
man1 boy1
man1 boy3
man1 boy4
man1 boy2
awk
Steeldriverが提案したように、次のように簡単に変更できます。
tac filename | awk '/^man1/ && !x[$2]++' | tac