J'ai ce fichier:
names average
john:15.02
Mark:09.63
James:12.58
Je veux en extraire uniquement les moyennes supérieures à 10, donc la sortie dans cet exemple devrait être:
15.02
12.58
command-line
text-processing
Haikel Fazzani
la source
la source
[[ $0 > 10 ]]
comme une comparaison lexicale - et en tout cas, n'aide pas beaucoup pour les valeurs non entièresAvec grep, vous devrez travailler avec des expressions régulières; par exemple
comme avec sed:
Mais l'utilisation de RegEx sur les données commandées est sujette aux erreurs (d'après mon expérience) et difficile à lire ;-).
la source
grep ':[1-9][0-9]\+\.' <file | cut -d: -f2
etsed -n 's/.*:\([1-9][0-9]\+\..*\)/\1/p' <file
. Il convient de mentionner que cela ne fonctionne qu'avec> 1,> 10,> 100, etc., par exemple> 20 serait impossible.':[1-9][0-9]\+\.\?'
- le point décimal littéral \. est facultatif et correspond au plus une fois \ ?. (@dessert merci d'avoir signalé la restriction de mon RegEx.)