特定のテキスト(TY [0-9]など)の発生回数を計算したい10 GBのファイルがあります。
サンプルファイル:
ABC,2A,2018-07-06,2018-06-20 00:00:00
BCD,TY1,2018-07-06,2018-06-20 00:00:00
EFG,TY2,2018-07-06,2018-06-20 00:00:00
IGH,2A,2018-07-06,2018-06-20 00:00:00
TY
数字で始まるすべてのテキストの数を取得したいです。 egrepを使ってみましたが、正しい結果が得られませんでした。
egrep "^TY[0-9]" Filename
ベストアンサー1
試した解決策の主な問題は、TY
文字列の先頭(表現式を固定する位置^
)で突き出る音が発生すると仮定することです。 2番目のカンマ区切りフィールドの先頭に表示されます。
awk
ファイル内の2番目のカンマ区切りフィールドが文字列と数字で始まる回数を計算するために使用されますTY
。
awk -F, '$2 ~ /^TY[[:digit:]]/ { n++ } END { print n }' filename
cut
と一緒に使用する方が速いのではないかと思いますgrep
。 2番目の列を削除すると、処理するデータが少なくなるため、単独で実行するよりも速度が速くなりますgrep
。grep
cut -d, -f2 filename | grep -c '^TY[[:digit:]]'
…でもよく分からない。
私のOpenBSDシステムで1.1GBファイルでいくつかのテストを行った結果、+は実際にはcut
(8秒対15秒)よりもgrep
ほぼ50%速かったです。awk
そして純粋なgrep
溶液(grep -Ec '\<TY[0-9]' filename
、からインポートグレンのソリューション)13秒かかります。
したがって、2番目のフィールドで文字列を選択した場合は、一致する前にそのフィールドを抽出することで時間を節約できます。