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
。