1行でどの単語が繰り返されるか、ファイルに何回表示されるかを知りたいです。

1行でどの単語が繰り返されるか、ファイルに何回表示されるかを知りたいです。

a.txt例:次の内容を含むファイルがあります。

aunt bear bear true

b.txt次の内容を含むファイルもあります。

tru tru high

私が望む最終結果は次のとおりです。

for a.txt : bear x 2
for b.txt : tru x 2

これまで私はこれだけ考えることができます:

cut -d ' ' -f1 file.txt | sort | uniq -c | head -1

私は完全にアイデアを持っていません。

ファイルを並べ替える必要があります。注:c.txt b.txt y.txtファイルを導入するときは、bの内容が最初に来て、yの内容が最後に来る必要があります。

ベストアンサー1

任意のファイル名とファイルの内容を使用して動作する簡単で迅速な方法は次のとおりです。

$ for file in a.txt b.txt ; do 
    printf 'for %s : %s\n' "$file" "$(tr ' ' '\n' < "$file" | sort | uniq -dc)"; 
  done
for a.txt :       2 bear
for b.txt :       2 tru

または必要な場合正確に表示される形式:

$ for file in a.txt b.txt ; do 
    printf 'for %s : %s x %s\n' "$file" \
        $(tr ' ' '\n' < "$file" | sort | uniq -dc | awk '{print $2,$1}');
  done
for a.txt : bear x 2
for b.txt : tru x 2

おすすめ記事