私は多数のファイルやサブディレクトリから「the」のすべての発生を見つけて計算する小さなスクリプトを書いています。次に、ファイルアドレスと「the」の発生回数を印刷する必要があります。しかし、私はそれを達成する方法を知りません。
find . -name "*.txt" -type f -printf "%p\t" -exec grep -c "the" {}\;
ex.sh プログラム名
txt ファイル拡張子
単語発生の検索
正しい出力は次のようにする必要があります。
./ex.sh txt the ./etext00/00ws110.txt 42764 ./etext00/1cahe10.txt 26692 ./etext00/1vkip11.txt 21895 ./etext00/2cahe10.txt 24604 ./etext00/2yb4m10.txt 15476 ./etext00/8rbaa10.txt 3131
私が得るもの:
./etext00/00ws110.txt 35388 ./etext00/1cahe10.txt 17905 ./etext00/1vkip11.txt 14617 ./etext00/2cahe10.txt 16971 ./etext00/2yb4m10.txt 9938 ./etext00/8rbaa10.txt 1839
私はそれが「the」の外観を含む行の数であると仮定していますが、一部の行には「the」が1つ以上ある場合があります。
ベストアンサー1
grep -o the
生成された行数を使用して計算します。
find . -name "*.txt" -type f -printf "%p\t" \
-exec sh -c 'grep -o "the" "$0" | wc -l' {} \;
grep -o
各行の各一致を別々の行に返します(出力行ごとに1つの一致)。
in(完全な単語の一致)など、一致を含める(大文字と小文字の区別)および除外するために-wi
withを使用することもできます。grep
The
the
theory