У меня есть этот файл:
names average
john:15.02
Mark:09.63
James:12.58
Я хочу извлечь из него только средние значения, превышающие 10, поэтому вывод в этом примере должен быть:
15.02
12.58
command-line
text-processing
Хайкель Фаззани
источник
источник
[[ $0 > 10 ]]
как лексическое сравнение - и в любом случае не очень поможет для нецелочисленных значенийС grep вам придется работать с регулярными выражениями; например
как с sed:
Но использование RegEx для упорядоченных данных подвержено ошибкам (по моему опыту) и их трудно читать ;-).
источник
grep ':[1-9][0-9]\+\.' <file | cut -d: -f2
иsed -n 's/.*:\([1-9][0-9]\+\..*\)/\1/p' <file
. Стоит отметить, что это работает только с> 1,> 10,> 100 и т. Д., Например,> 20 будет невозможно.':[1-9][0-9]\+\.\?'
- буквальная десятичная точка \. является необязательным и сопоставляется не более одного раза \ ?. (@dessert спасибо за указание на ограничение моего RegEx.)