現在のディレクトリ内のすべてのファイルを再帰的に検索してパターンを検索し、最も高いものから低いものの順に印刷する方法はありますか?

現在のディレクトリ内のすべてのファイルを再帰的に検索してパターンを検索し、最も高いものから低いものの順に印刷する方法はありますか?

これまでのコードは次のとおりです。

grep -rc 'Author' $1

ディレクトリ内のすべてのファイルを印刷し、引数として使用します。ただし、出力をどのように並べ替えるのですか(例:):

 - data1:43 
 - data2:56
 - data3:14

最高から最低までのリストを入力してください。

 - data2:56
 - data1:43
 - data3:14

答え1

grep -rc 'Author' $1 | sort -t : -k 2,2n

特定の行でキーワードが何度も繰り返されても、キーワードを含む行数が必要な場合は問題ありません。実際の単語数が必要な場合は、これを使用する必要があります

echo $1:$(grep -o 'Author' $1|wc -l) | sort -t : -k 2,2n

grepの-oオプションは、grepのGnuバージョンで利用できる可能性が高いです。以前のレガシーシステムで提供されているgrepを使用している場合は、使用できない可能性があります。簡単にお知らせします。

答え2

高いものから低いものの順に並べ替え:

grep -rc 'Author' $1 | sort -r -t ':' -k2,2n
  • -r最も高いものから最も低いものまで逆順に並べ替えます。
  • -t区切り文字を紹介します。
  • -kソートするフィールドを紹介します。フィールドは定義された区切り文字で区切られます-t。この構文は、2と2の間のすべてのフィールド(つまり、2番目のフィールドのみ)に基づいてソートすることを意味します。事前編成順序の代わりに数値を使用する方法ですn(たとえば、直後で109なく後に来ます1)。

関連情報