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