Tengo este archivo:
names average
john:15.02
Mark:09.63
James:12.58
Quiero extraer solo los promedios mayores de 10, por lo que la salida en este ejemplo debería ser:
15.02
12.58
command-line
text-processing
Haikel Fazzani
fuente
fuente
[[ $0 > 10 ]]
como una comparación léxica - y, en cualquier caso, no es de mucha ayuda para los valores no enterosCon grep tendrías que trabajar con expresiones regulares; p.ej
como con sed:
Pero usar RegEx en datos ordenados es propenso a errores (en mi experiencia) y difícil de leer ;-).
fuente
grep ':[1-9][0-9]\+\.' <file | cut -d: -f2
ysed -n 's/.*:\([1-9][0-9]\+\..*\)/\1/p' <file
. Vale la pena mencionar que esto funciona solo con> 1,> 10,> 100, etc., por ejemplo,> 20 sería imposible.':[1-9][0-9]\+\.\?'
- el punto decimal literal \. es opcional y coincide como máximo una vez? (@dessert gracias por señalar la restricción de mi RegEx.)