Извлеките уникальные слова из файла и напечатайте числа, связанные с ним, в той же строке, разделенные linux - PullRequest
0 голосов
/ 10 апреля 2020

Мой файл имеет вид, показанный ниже:

1: test
18: test
29: test
25: crazy
30: crazy

Я хочу игнорировать регистр и получить уникальные слова в файле с соответствующими значениями

Требуемый вывод должен быть:

test: 1 18 29
crazy: 25 30

Может кто-нибудь подсказать, как это можно сделать в Linux / Bash?

Ответы [ 2 ]

2 голосов
/ 10 апреля 2020

Может ли кто-нибудь подсказать, как это можно сделать в Linux / Bash?

Вы можете использовать ассоциативный массив awk для достижения этого:

  • convert 2-е поле в верхнем или нижнем регистре
  • создайте ассоциативный массив в awk
  • , используйте результат 1-го шага в качестве ключа и добавьте 1-е поле в массив
  • после всех строки обрабатываются awk, вы go через массив, распечатываете ключи и значения
1 голос
/ 11 апреля 2020

Печатается желаемый вывод.

awk -F':' '{a[$2]=a[$2]" " $1}END{for(i in a) print i": " a[i]}' input_file.txt
...