awk +ファイルの文字列数の計算

awk +ファイルの文字列数の計算

私たちはこのような巨大なファイルを持っています

これはファイルの一部のリストです。

Topic: Ho_HTR_bvt     Partition: 31   Leader: 1007    Replicas: 1007,1008,1009        Isr: 1009,1007,1008
Topic: Ho_HTR_bvt     Partition: 32   Leader: 1008    Replicas: 1008,1009,1010        Isr: 1010,1009,1008
Topic: Ho_HTR_bvt     Partition: 33   Leader: 1009    Replicas: 1009,1010,1006        Isr: 1009,1010,1006
Topic: Ho_HTR_bvt     Partition: 34   Leader: 1010    Replicas: 1010,1006,1007        Isr: 1006,1007,1010
Topic: Ho_HTR_bvt     Partition: 35   Leader: 1006    Replicas: 1006,1008,1009        Isr: 1006,1009,1008
Topic: Ho_HTR_bvt     Partition: 36   Leader: 1007    Replicas: 1007,1009,1010        Isr: 1010,1007,1009
Topic: Ho_HTR_bvt     Partition: 37   Leader: 1008    Replicas: 1008,1010,1006        Isr: 1006,1010,1008
Topic: Ho_HTR_bvt     Partition: 38   Leader: 1009    Replicas: 1009,1006,1007        Isr: 1007,1009,1006
Topic: Ho_HTR_bvt     Partition: 39   Leader: 1010    Replicas: 1010,1007,1008        Isr: 1010,1007,1008
Topic: Ho_HTR_bvt     Partition: 40   Leader: 1006    Replicas: 1006,1009,1010        Isr: 1006,1010,1009
Topic: Ho_HTR_bvt     Partition: 41   Leader: 1007    Replicas: 1007,1010,1006        Isr: 1006,1007,1010
Topic: Ho_HTR_bvt     Partition: 42   Leader: 1008    Replicas: 1008,1006,1007        Isr: 1006,1007,1008
Topic: Ho_HTR_bvt     Partition: 43   Leader: 1009    Replicas: 1009,1007,1008        Isr: 1009,1007,1008
Topic: Ho_HTR_bvt     Partition: 44   Leader: 1010    Replicas: 1010,1008,1009        Isr: 1010,1009,1008

数量の計算方法 -1007ひも?

またはファイル内の他の単語

答え1

サンプルデータの使用:

$ grep -Fo 1007 file | wc -l
      19

パイプラインのこの部分はgrep文字列を検索します1007-F正規表現一致ではなく文字列比較を実行するため、このフラグが使用されます)。このフラグは新しい行に文字列の個々のインスタンスを返します-o。返された行数が計算されますwc -l

文字列が入力データ行に 2 回表示されると、2 回計算されます。文字列が他の単語の部分文字列として現れる場合でも計算されます。

そしてawk

$ awk -v str="1007" '{ c += gsub(str, str) } END { print c }' file
19

これは文字列の発生回数を計算しgsub()(関数は置換が行われた回数を返し、それを各入力行に個別に適用します)、最後に合計回数を印刷します。興味のある文字列はコマンドラインを介して渡されます-v str="1007"

答え2

awkを使用する必要がある場合は、次のコマンドを使用できます。

awk '{for (i=1;i<=NF;i++) if ( $i == "word/number that you want to search") c++ }'END'{print c}' filename

答え3

注文する:

awk '{print gsub("1007",$0)}' filename | awk 'BEGIN{sum=0}{sum=sum+$1}END{print sum}'

-0-praveenk_22@:~ $ 

出力

awk '{print gsub("1007",$0)}' u.txt | awk 'BEGIN{sum=0}{sum=sum+$1}END{print sum}'
19
-0-praveenk_22@:~ $

関連情報