Как мне использовать grep для генерации
Как бы я создать список, который отображает самые низкие цифры в файле?
ех.
- Элемент списка 2476 Джеки Вудсон: менеджер:: продажи:: 01.05.59: 110000
- Элемент списка 2000 Джек Уилсон: директор:: счета:: 19.0455: 80000
- Элемент списка 7700 Уилсон Али: исполнитель:: счета:: 30.0856: 90000
Элемент списка 3364 Билл Уилкокс: менеджер:: продажи:: 12.1255: 65000
Элемент списка 4290 Нил О'Брайан: руководитель:: счета:: 01/01/59: 100000
Элемент списка 2000 Уилсон Альберт: Председатель:: производства:: 12/12/50: 125000
Я хочу перечислить диапазон показа между 60000 и 9000 и перечислить только тех, кто использует grep
я пробовал
grep "[69]" .....$ filename
3 ответа
grep
не делает числовых сравнений, и не является инструментом для использования здесь. Я бы использовал:
sort --field-separator=":" --numeric-sort --reverse --key=7 --ignore-leading-blanks filename | \
tail --lines=3 | \
sort --field-separator=":" --numeric-sort --key=7 --ignore-leading-blanks
grep
инструмент сопоставления строк, что означает, что он сопоставляет только те строки, которые имеют определенный текст. То, что вы хотите, это утилита обработки текста, такая как awk
это может сделать сравнения.
$ awk -F ':' '$NF > 60000 && $NF<90000' list.txt
List item 2000 Jack Wilson :director: :accounts: :04/19/55: 80000
List item 3364 Bill Wilcocks :manager: :sales: :12/12/55: 65000
Как это работает, просто:
-F ':'
говорит awk обрабатывать каждую строку как набор слов, разделенных двоеточиями'$NF > 60000 && $NF<90000'
посмотрим на последнее слово$NF
и проверьте, что оно больше 60000 И (&&
часть) 90000.