プレーンテキストファイル内の文字の出現をカウントする
質問
linux / terminalでカウントする方法はありますか、プレーンテキストファイルでchar fが何回発生しますか?
解決
これについてはどうですか:
fgrep -o f <file> | wc -l
注:覚えやすく、複製し、カスタマイズしやすいことに加えて、これはVerebの答えよりも約3倍高速です(ごめん、編集!最初のテストが失敗しました)。
他のヒント
さらに高速:
tr -cd f < file | wc -c
このコマンドの実行時間、4.9 MBのファイルと1100000の検索文字の出現:
real 0m0.089s
user 0m0.057s
sys 0m0.027s
Vereb回答の時間、同じファイルに対してecho
、cat
、tr
、およびbc
を使用:
real 0m0.168s
user 0m0.059s
sys 0m0.115s
Rob Hruskaが同じファイルに対してsed
、wc
およびfgrep
で答える時間:
real 0m0.465s
user 0m0.411s
sys 0m0.080s
Jefromiが同じファイルに対して<=>と<=>で答える時間:
real 0m0.522s
user 0m0.477s
sys 0m0.023s
echo $(cat <file> | wc -c) - $(cat <file> | tr -d 'A' | wc -c) | bc
Aは文字です
4.9 MBおよび1100000回の検索文字の出現を伴うファイルでのこのコマンドの時間:
real 0m0.168s
user 0m0.059s
sys 0m0.115s
あなたがする必要があるのがあなたのキャラクターを含む行の数を数えることだけなら、これは動作します:
grep -c 'f' myfile
ただし、同じ行での複数の 'f'の出現は、単一の一致としてカウントされます。
tr -d '\n' < file | sed 's/A/A\n/g' | wc -l
<!> quot; A <!> quotの2つのオカレンスを置き換える。あなたのキャラクターと<!> quot; file <!> quot;入力ファイルで。
-
tr -d '\n' < file
:改行を削除します -
sed 's/A/A\n/g
:<!> quot; A <!> quot; が現れるたびに改行を追加します
-
wc -l
:行数をカウントします
例:
$ cat file
abcdefgabcdefgababababbbba
1234gabca
$ tr -d '\n' < file | sed 's/a/a\n/g' | wc -l
9
所属していません StackOverflow