Печать отличительных значений из поля AWK - PullRequest
0 голосов
/ 07 мая 2018

Я ищу способ напечатать отдельные значения в поле в среде командной строки, используя AWK.

ID     Title     Promotion_ID     Flag
12     Purse       7               Y
24     Wallet      7               Y
709    iPhone      1117            Y
74     Satchel     7               Y
283    Xbox        84              N

В идеале я хотел бы вернуть promo_ids: 7, 1117, 84. Я исследовал вопрос в Google и нашел несколько примеров, таких как:

`cut -f 3 | uniq *filename.ext*`               (returned error)
`awk cut -f 3| uniq *filename.ext*`            (returned error)
`awk cut -d, -f3 *filename.ext* |sort| uniq`   (returned error)

Ответы [ 3 ]

0 голосов
/ 07 мая 2018
awk 'NR>1{a[$3]++} END{for(b in a) print b}' file

Выход:

7
84
1117
0 голосов
/ 07 мая 2018

с трубопроводом

$ sed 1d file    |    # remove header
  tr -s ' ' '\t' |    # normalize space delimiters to tabs
  cut -f3        |    # isolate the field
  sort -nu            # sort numerically and report unique entries

7
84
1117
0 голосов
/ 07 мая 2018

Решение 1-е: Простой awk может помочь. (Следующее удалит заголовок Input_file)

awk 'FNR>1 && !a[$3]++{print $3}' Input_file

Решение 2-е: Если вам нужно сохранить заголовок файла Input_file, то следующее может помочь вам в этом.

awk 'FNR==1{print;next} !a[$3]++{print $3}'  Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...