Ich habe diese Datei:
names average
john:15.02
Mark:09.63
James:12.58
Ich möchte nur die Durchschnittswerte größer als 10 daraus extrahieren, daher sollte die Ausgabe in diesem Beispiel wie folgt lauten:
15.02
12.58
command-line
text-processing
Haikel Fazzani
quelle
quelle
[[ $0 > 10 ]]
als lexikalischer Vergleich behandelt wird - und auf jeden Fall keine große Hilfe für nicht ganzzahlige Werte istMit grep müssten Sie mit regulären Ausdrücken arbeiten. z.B
wie bei sed:
Die Verwendung von RegEx für bestellte Daten ist jedoch (meiner Erfahrung nach) fehleranfällig und schwer zu lesen ;-).
quelle
grep ':[1-9][0-9]\+\.' <file | cut -d: -f2
und gekürzt werdensed -n 's/.*:\([1-9][0-9]\+\..*\)/\1/p' <file
. Es ist erwähnenswert, dass dies nur mit> 1,> 10,> 100 usw. funktioniert, zB> 20 wäre unmöglich.':[1-9][0-9]\+\.\?'
- der wörtliche Dezimalpunkt \. ist optional und höchstens einmal abgeglichen \?. (@ Dessert danke für den Hinweis auf die Einschränkung meiner RegEx.)