awkで最後の行を繰り返したいですか?

awkで最後の行を繰り返したいですか?

私はファイルを持っています:

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

awkSteeldriverが提案したように、次のように簡単に変更できます。

tac filename | awk '/^man1/ && !x[$2]++' | tac

おすすめ記事