Добавление строк в awk-output - PullRequest
0 голосов
/ 30 марта 2020

Я использую awk для написания сценария bash, который выводит количество кодов ошибок в диапазоне от 400 - 500, которые появляются в текстовом файле с именем output.txt

awk '($9 >= 400)' output.txt | awk '{print $9}' | sort | uniq -c

Выходные данные из приведенного выше:

  12 400
  11 401
  55 403
  91 404
  41 500

Как добавить первый столбец вместе, используя bash, чтобы в приведенном выше примере я получил 210 вместо вышеприведенного вывода ... (12 + 11 + 55 + 91 + 41 = 210)

И если я хочу ввести в файл аргумент командной строки вместо output.txt, как мне отредактировать скрипт? Я знаю, что вы используете $ 1 и $ 2 для доступа к аргументам командной строки, но в этом случае, как это будет работать, учитывая, что я уже использую $9 с awk

Ответы [ 2 ]

2 голосов
/ 30 марта 2020

Чтобы решить вашу проблему немедленно, поскольку вы уже используете 1 команду, попробуйте как (хотя я вполне уверен, что если вы могли бы поделиться примером ввода, мы могли бы сделать это и в одной команде):

your_command | awk '{sum+=$1} END{print sum}'

Также в командной части OP awk '($9 >= 400)' output.txt | awk '{print $9}' может быть сокращено до awk '($9 >= 400){print $9}' output.txt

1 голос
/ 30 марта 2020

Для получения the count of error codes ranging from 400 - 500 that appear in a text file called output.txt при условии, что каждый код ошибки в $ 9 равен:

awk '($9 >= 400) && ($9 <= 500) && !seen[$9]++{cnt++} END{print cnt+0}' output.txt

Для получения the count of **lines containing** error codes ranging from 400 - 500 that appear in a text file called output.txt в предположении, что каждый код ошибки в $ 9:

awk '($9 >= 400) && ($9 <= 500){cnt++} END{print cnt+0}' output.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...