4

私は少しbashを知っていますが、ファイルをフィルタリングする際に問題に直面しています。例を挙げて説明します:

次のようなテキストファイルがあるとします(file1):

10.10.12 bib24 Avenger goodone
10.10.12 bib21 The_Dark_Knight_Rises betterone
10.10.12 bib53 Avenger goodone
10.10.12 bib35 Ice_Age wow
11.10.12 bib53 TheAmazingSpiderMan nice
11.10.12 bib54 TheAmazingSpiderMan nice
11.10.12 bib01 Avenger goodone
12.10.12 bib29 Avenger goodone
12.10.12 bib11 TheAmazingSpiderMan nice
12.10.12 bib03 Ice_Age wow
12.10.12 bib98 Ice_Age wow
14.10.12 bib12 Ice_Age wow

これは私が望む結果です(file2):

10.10.12 bib24 Avenger goodone
10.10.12 bib21 The_Dark_Knight_Rises betterone
10.10.12 bib35 Ice_Age wow
11.10.12 bib53 TheAmazingSpiderMan nice

だから私の質問は:この結果(file2)を取得するためにどのコマンドを使用しますか?(つまり、映画の最初のエントリであり、列/フィールド1、2、および4は考慮されていません)。

私はそれが十分に明確であることを望みます。

4

3 に答える 3

5

使用する1つの方法は次のawkとおりです。

awk '!a[$3]++' file.txt

結果:

10.10.12 bib24 Avenger goodone
10.10.12 bib21 The_Dark_Knight_Rises betterone
10.10.12 bib35 Ice_Age wow
11.10.12 bib53 TheAmazingSpiderMan nice
于 2012-10-18T13:50:28.463 に答える
4

やってみてください:

sort -u -k3 file.txt

出力

10.10.12 bib24 Avenger goodone
10.10.12 bib35 Ice_Age wow
11.10.12 bib53 TheAmazingSpiderMan nice
10.10.12 bib21 The_Dark_Knight_Rises betterone
于 2012-10-18T13:43:20.937 に答える
0

さびたcshユーザーの場合:

これを使って:

awk '{c[$3]++} {if (c[$3] == 1) print $0}' file.txt

元の答えでは、「イベントが見つかりません」というエラーが発生するためです(「!」を通常の文字にすることもできますが、これは読みやすく、使いやすいです)

于 2014-02-24T10:37:32.247 に答える