
Tengo esto :
S=`cat sales.txt`;
echo "$S" | cut -d: -f5 | grep -E '[0-9][0-9][0-9]' | wc -l
Mi archivo de texto:nombre: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
Estoy tratando de contar el número de líneas en las que el valor de la quinta columna está en el rango de 0 a 999.
Cuando intento ejecutar, me da cuenta de 3 donde debería ser 6.
Respuesta1
Sus números de dos dígitos no coinciden con la expresión regular [0-9][0-9][0-9]
.
Además, almacenar un archivo en una variable y luego imprimirlo echo
es unaen realidadmala idea. Ver¿Por qué printf es mejor que echo?, pero lo que es aún más importante, puedes hacerlo cat file
en lugar del echo
comando.
En realidad, puedes hacer todo con Awk y luego ni siquiera necesitas cat
. Como no muestra ningún número negativo, simplemente comprobaré "menos de mil".
awk -F: '$5 < 1000 {a++} END {print a}' sales.txt