Скрипт оболочки, подсчитывающий строки, попадающие в диапазон значений

Скрипт оболочки, подсчитывающий строки, попадающие в диапазон значений

У меня есть это :

 S=`cat sales.txt`;
    echo "$S" | cut -d: -f5 | grep -E '[0-9][0-9][0-9]' | wc -l

Мой текстовый файл:имя:идентификатор:номер:тип:значение

Tom:8:987654:A:67           //1
Dick:9:7651:B:83            //2
Harry:5:21215121:A:92       //3
Molly:2:1231872231:A:44     //4
Megan:123:322:B:145         //5
Russia:8:99231272:B:530     //6
Boleh:123:29321831:C:5000   //7

Я пытаюсь подсчитать количество строк, в которых значение 5-го столбца находится в диапазоне 0-999.

Когда я пытаюсь бежать, он выдает мне счет 3, хотя должно быть 6.

решение1

Ваши двузначные числа не соответствуют регулярному выражению [0-9][0-9][0-9].

Кроме того, сохранение файла в переменной и последующая его печать echo— этоДействительноплохая идея. СмотритеПочему printf лучше, чем echo?, но что еще важнее, вы можете просто сделать cat fileвместо echoкоманды.

На самом деле, вы можете сделать все это с помощью Awk, и тогда вам даже не понадобится cat. Поскольку вы не показываете никаких отрицательных чисел, я просто сделаю проверку на «меньше тысячи».

awk -F: '$5 < 1000 {a++} END {print a}' sales.txt

Связанный контент