awk は、2 番目の列に最も一般的な文字列を出力します。

awk は、2 番目の列に最も一般的な文字列を出力します。

2番目の列から始めて、ファイル内で最も一般的な10個の文字列を1行ずつ印刷したいと思います。

入力例:

example123:Example
Example321:Example
Common:String
Common:String
..

期待される出力

example
string
...

ベストアンサー1

おそらくスペルが間違っている場合の変形です。そうであれば、以下が有効です。

awk -F: '{print $2}' input.txt | sort | uniq -c | sort -rn | awk '{print $2}'

説明する

これを理解するには、最初のコマンドから始めてパイプラインまで作業し、個別に実行します。次に、次のパイプを順番に追加します。

  • awk -F: '{print $2}' input.txt:区切り文字で2番目のフィールドを印刷します。
  • | sort:実行できるようにファイルをソートします。
  • | uniq -c、重複数を一覧表示しながら、隣接する重複項目を1つに圧縮します-c
  • | sort -rn:出力を数で降順に並べ替えます。
  • | awk '{print $2}':数を削除し、一致する文字列のみを印刷します。

私は一般的にcut代わりを使用しますawkが、あなたの質問ではそれを求めているのでawk...代わりに、最初のコマンドはより簡単ですcut -d: -f2 input.txt

おすすめ記事