Outra abordagem (graças ao Archemar + kos para evitar o uso de egrep
e usar -c
)
grep -cE '^.{28}04' data1.txt
No código unix / awk
Essencialmente, eu preciso percorrer o arquivo (data1.txt) e contar o número de vezes que o substr ($ 0,29,2) de cada linha do arquivo == "04".
data1.txt:
6597243042 20160305001100003140152852153019000127000200
6597243042 20160305001100003140170306190306020000000200
6597243042 20160305001100003140170552190552020000000200
6597243042 20160305001100003140201430201543000113000400
6592311319 20160305041100003460072719072839000120001200
6592311319 20160305041100003460072927072952000025001200
Nesse caso, apenas duas linhas do arquivo (data1.txt) preenchem a condição (substr ($ 0,29,2) == "04")
Estou empenhado em encontrar uma maneira de fazer isso
Abaixo está o meu código 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"
Como posso contar isso?
Outra abordagem (graças ao Archemar + kos para evitar o uso de egrep
e usar -c
)
grep -cE '^.{28}04' data1.txt
simplesmente tente
awk 'BEGIN { count = 0 ;} substr($0,29,2) == "04" { count++ ; } END { print count ;}' files
onde
substr($0,29,2) == "04"
search fo condition { count++ ; }
se encontrado aumentar contagem END
no final { print count ;}
imprima. editar:
count=0
graças a @steeldriver A linha de comando do awk pode ser inserida como abaixo para facilitar a leitura.
awk 'BEGIN { count = 0 ;}
substr($0,29,2) == "04" { count++ ; }
END { print count ;}' files
Tags text-processing awk