Grepping все строки на той же строке

Попытка найти путь к grep всеми именами на одной строке для 100 файлов. захват всех имен, доступных в каждом файле, должен появиться на той же строке.

FILE1

"company":"COMPANY1","companyDisplayName":"CM1","company":"COMPANY2","companyDisplayName":"CM2","company":"COMPANY3","companyDisplayName":"CM3",

FILE2

"company":"COMPANY99","companyDisplayName":"CM99"

Вывод, который я на самом деле хочу, (включайте имя файла как префикс.)

FILE1:COMPANY1,COMPANY2,COMPANY3    
FILE2:COMPANY99

я попробовал grep -oP '(?<="company":")[^"]*' * но я получаю результаты как это:

FILE1:COMPANY1
FILE1:COMPANY2
FILE1:COMPANY3
FILE2:COMPANY99
0
задан 10 March 2019 в 15:56

1 ответ

Так как Вы уже используете Совместимое с Perl регулярное выражение (PCRE), почему бы не использовать сам Perl?

$ perl -0777 -lnE 'say "$ARGV:", join ",", /(?<="company":")[^"]*/g' FILE*
FILE1:COMPANY1,COMPANY2,COMPANY3
FILE2:COMPANY99

Если каждый файл содержит только одну строку, можно опустить -0777 "хлебать".

1
ответ дан 26 October 2019 в 01:53

Другие вопросы по тегам:

Похожие вопросы: