Как обработать текстовые строки в bash, извлекая числа для каждой совпадающей строки? - PullRequest
0 голосов
/ 04 мая 2020

У меня есть grep, который возвращает мне текстовый файл в следующем формате:

filename1.txt:14
filename1.txt:17
filename2.txt:10

Я хочу написать сценарии, чтобы я мог генерировать текст в следующем формате:

filename1.txt 14 17
filename2.txt 10

Как мне извлечь эти числа в bash?

1 Ответ

1 голос
/ 04 мая 2020

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

previous_command | awk -F':' '{x[$1] = x[$1]" "$2} END {for (f in x) print f""x[f]}'

Если previous_command производит:

filename1.txt:14
filename1.txt:17
filename2.txt:10

Тогда результат будет:

filename2.txt 10
filename1.txt 14 17

Если вы также хотите, чтобы результат был упорядочен по алфавиту, просто перенаправьте его на sort:

previous_command | awk -F':' '{x[$1] = x[$1]" "$2} END {for (f in x) print f""x[f]}' | sort

Результат:

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