質問

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回答の時間、同じファイルに対してechocattr、およびbcを使用:

real   0m0.168s
user   0m0.059s
sys    0m0.115s

Rob Hruskaが同じファイルに対してsedwcおよび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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top