Подсчитайте каждую строку AWK Выходной поиск в файле

У меня была аналогичная проблема, и я выполнил команду TOP в фоновом режиме и перенаправил ее в файл txt

top > top.txt &

Спасибо, что вы видите, какой процесс тратит ваш процессор

0
09.08.2018, 22:59
2 ответа

Вот как я подошел к этой проблеме:

awk '{n=1;if(NR==1)n=25;for(i=n;i<=NF;i++) a[$i]++} END{for(val in a) print val,a[val]}' input.txt

Тот факт, что вы хотите захватить поля 25 и далее в первой строке, требует, чтобы мы проверили переменную NRи установили переменную n, которая будет использоваться в цикле. Что касается a[$i]++, это будет ассоциативный массив с полями, являющимися ключами, а значения внутри массива будут увеличиваться с помощью оператора ++. Это очень типичный способ подсчета полей в awk.

2
28.01.2020, 02:23

Как насчет

awk '{for (i=25; i<=NF; i++) print $i; exit}' file | sort | uniq -c
  6 string1
  6 string2
  6 string3
  6 string4
  6 string5
  6 stringN

РЕДАКТИРОВАТЬ:В вашем недавно добавленном образце ввода у вас нет 24 полей, которые нужно игнорировать до начала подсчета, и ограничение на первую строку (, как следует из вашего первого фрагмента кода ), похоже, имеет тоже ушел. Попробуйте

tr -s ' ' '\n' <file |  sort | uniq -c
  2 Column1
  2 Column2
  3 Column3
  3 ColumnN
1
28.01.2020, 02:23

Теги

Похожие вопросы