awkの式がtrueの回数を数えます。

awkの式がtrueの回数を数えます。

Unix / awkコードから

デフォルトでは、ファイル(data1.txt)を繰り返し、ファイルの各行に対してsubstr($ 0,29,2)== "04"の回数を計算する必要があります。

データ1.txt:

6597243042 20160305001100003140152852153019000127000200
6597243042 20160305001100003140170306190306020000000200
6597243042 20160305001100003140170552190552020000000200
6597243042 20160305001100003140201430201543000113000400
6592311319 20160305041100003460072719072839000120001200
6592311319 20160305041100003460072927072952000025001200

この場合、ファイル(data1.txt)の2行のみ条件(substr($ 0,29,2)== "04")を満たします。

私はこれを行う方法を探していました。

以下は私のUnix / awkコードです。

Filename="def"
file="data1.txt"
#awk '{count1=0}'
while IFS= read line
do

   awk '{ if (substr($0,29,2)=="04") {print substr($0,29,4)}}' 

done <"$file"

これをどのように計算しますか?

答え1

egrep別の方法(使用されていないことを避けて使用するArchemar + kosに感謝します-c

grep -cE '^.{28}04' data1.txt

答え2

ただ試してください

awk 'BEGIN { count = 0 ;} substr($0,29,2) == "04" { count++ ; } END { print count ;}' files

どこ

  • substr($0,29,2) == "04"検索条件
  • { count++ ; } 見つかると、数が増える
  • END最後に
  • { print count ;}印刷してください。

編集する:

  • count=0@スチールドライバーありがとう

読みやすくするには、次のようにawkコマンドラインを入力します。

awk 'BEGIN { count = 0 ;} 
     substr($0,29,2) == "04" { count++ ; } 
     END { print count ;}' files

関連情報