
Eu tenho isto :
S=`cat sales.txt`;
echo "$S" | cut -d: -f5 | grep -E '[0-9][0-9][0-9]' | wc -l
Meu arquivo de texto:nome:id:número:tipo:valor
Tom:8:987654:A:67 //1
Dick:9:7651:B:83 //2
Harry:5:21215121:A:92 //3
Molly:2:1231872231:A:44 //4
Megan:123:322:B:145 //5
Russia:8:99231272:B:530 //6
Boleh:123:29321831:C:5000 //7
Estou tentando contar o número de linhas em que o valor da 5ª coluna está no intervalo de 0-999.
Quando tento executar, recebo uma contagem de 3 onde deveria ser 6.
Responder1
Seus números de dois dígitos não correspondem ao regex [0-9][0-9][0-9]
.
Além disso, armazenar um arquivo em uma variável e depois imprimi-lo echo
é uma tarefarealmentepéssima ideia. VerPor que printf é melhor que echo?, mas ainda mais direto ao ponto, você pode simplesmente fazer cat file
no lugar do echo
comando.
Na verdade, você pode fazer tudo com o Awk e nem precisa do cat
. Como você não mostra nenhum número negativo, farei apenas uma verificação de "menos de mil".
awk -F: '$5 < 1000 {a++} END {print a}' sales.txt