Я запускаю следующую команду:
grep -o "[0-9] errors" verification_report_3.txt | awk '{print $1}'
и я получаю следующий результат:
1
4
0
8
Я хотел бы добавить каждое из чисел до переменной счетчика. Есть ли волшебный лайнер, который кто-то может мне помочь построить?
variable=$(grep -o "[0-9] errors" verification_report_3.txt | awk '{ SUM += $1} END { print SUM }')
Это помещает вывод команды (которая является только значением суммы) в переменную с именемvariable
"[0-9]\+ errors"
. Это будет соответствовать, если у вас есть строка, сообщающая> 9 ошибок.Это все можно сделать и в awk:
источник
Вы, кажется, используете систему GNU , поэтому, если доступна поддержка регулярных выражений Perl , вы можете написать что-то вроде этого:
PS Я изменил регулярное выражение (добавил + квантификатор), чтобы разрешить числа> 9.
PS В качестве альтернативы достаточно awk (при условии, что GNU awk ):
источник
Попробуйте передать вывод из вашего grep в
источник
Я использую это:
Это не эффективно для больших списков, но для большинства моих случаев использования это хорошо. Я обычно использую функцию оболочки для автоматизации процесса, поэтому мне нужно только указать имя файла:
Вы всегда можете заменить маркер конца строки определенным разделителем элементов или классом символов, если ваши данные разделены другим способом.
источник