Печать повторяющихся значений из CSV-файла, включая количество вхождений

Как уже было установлено, в разных дистрибутивах используются разные имена.

Имеются веские причины для обоих

  • Сервер называется sshd, поэтомуsshd.service
  • sshdозначает «SSH Daemon» или «SSH Server», поэтому «SSH Server Service» будет двойным.

Таким образом, это будет вопрос предпочтения сопровождающих дистрибутивов. Эти предпочтения также могут меняться со временем, я помню время, когда Suse переключился с ntpна ntpdдля имени службы.

0
10.06.2021, 10:11
2 ответа
cut -f3 -d, "$file" | sort | uniq -cd | sed 's/  *//'
  • cutиспользует запятую в качестве разделителя и выводит только третье поле
  • sortсортирует строки, чтобы можно было использовать uniq
  • uniq -cподсчитывает количество последовательных повторяющихся строк, -dзаставляет выводить только дубликаты (, т.е. опускает уникальные значения)
  • последний sedудаляет начальные пробелы.
3
28.07.2021, 11:25

Ан awkодин -вкладыш:

awk -F',' '{c[$3]++} END{for (i in c) {if (c[i]>1) print c[i],i}}' input.csv
  • Это указывает awkна использование ,в качестве разделителя полей.
  • Для каждой строки будет увеличиваться счетчик для значения третьего поля($3).
  • В конце он перебирает все «индексы», зарегистрированные в массиве счетчиков c(for (i in c)), и, если «запись», связанная с этим индексом, больше единицы, выводит количество вхождений и соответствующее значение третьего столбец.

Если вам нужен более точный контроль над форматированием вывода, вы можете использовать printfвместо printв блоке END.

1
28.07.2021, 11:25

Теги

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