Обработка текста - Как напечатать номера строк после выравнивания строки в формате с разделителями-запятыми в Unix? - PullRequest
0 голосов
/ 05 сентября 2018

Я рекурсивно выбрал строку в каталоге, используя

grep -rwnoH "string"  /root/Documents/ | cut -d ":" -f1,2 > input.txt

Это дало мне следующий вывод: Файл input.txt с содержимым, подобным

/root/Documents/file1.txt:23
/root/Documents/file1.txt:35
/root/Documents/file1.txt:56
/root/Documents/file2.txt:12
/root/Documents/file2.txt:67
/root/Documents/file2.txt:78
/root/Documents/file3.txt:2
/root/Documents/file3.txt:10

Я хочу что-то вроде этого:

/home/root/Documents/file1.txt:23,35,56
/home/root/Documents/file2.txt:12,67,78
/home/root/Documents/file3.txt:2,10

1 Ответ

0 голосов
/ 05 сентября 2018

Используйте команду datamash:

datamash -t : -g 1 unique 2

Объяснение: -t указывает разделитель полей, -g 1 означает группу по первому полю, а unique 2 будет показывать различные значения для каждой группы.

Однако номер строки будет отсортирован как символ, а 10 будет идти до 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...