Как получить разделенный вывод "," с помощью команды awk в linux - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь распечатать вывод команды awk с разделителем ",".Попытка получить тот же вывод, используя cut.

cat File1
dot|is-big|a
dot|is-round|a
dot|is-gray|b
cat|is-big|a
hot|in-summer|a
dot|is-big|a
dot|is-round|b
dot|is-gray|a
cat|is-big|a
hot|in-summer|a

Команда попыталась:

$awk 'BEGIN{FS="|"; OFS=","} {print $1,$3}'  file1.csv | sort |  uniq -c

Выход получен:

  2 cat,a
  4 dot,a
  2 dot,b
  2 hot,a

Желаемый вывод:

  2,cat,a
  4,dot,a
  2,dot,b
  2,hot,a

Пара других команд пробовали:

$cat file1.csv |cut --output-delimiter="|"  -d'|' -f1,3 | sort | uniq -c

1 Ответ

1 голос
/ 25 июня 2019

Вам нужно изменить разделитель на , после , запустив uniq -c, так как он добавляет первый столбец.

awk -F'|' '{print $1, $3}' file1.csv | sort | uniq -c | awk 'BEGIN{OFS=","} {$1=$1;print}'

Но вам не нужно использовать sort | uniq -c если вы используете awk, он может выполнить сам подсчет.

awk 'BEGIN{FS="|";OFS=","} {a[$1 OFS $3]++} END{for(k in a) print a[k], k}' file1.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...