Ubuntu 18.04 с RX580, строка поставщика, показанная как VMWare, Inc

Хотя многие программы не очень длинны в качестве входных данных, когда ваши данные не огромны, вы часто можете упростить многострочное сопоставление, сначала манипулируя данными, чтобы поместить все в одну строку, выполнив совпадение, а затем восстановив новые строки.

Например, используйте tr для замены newline \n каким-либо символом, который не указан в ваших данных (я использовал возврат-возврат `\ r '), используйте sed для изменения этой отдельной строки, затем tr символ назад :

tr '\n' '\r' < file |
sed 's/\("[^"]*"\).*/\1/' |
( tr '\r' '\n';  echo ) # add a final newline

В противном случае, если вы заявляете, что хотите sed / awk / grep, языки, такие как perl и python, используют аналогичные регулярные выражения, как эти, и подходят для управления многострочными строками. Например, perl:

perl -e '$_ = join("",<>); s/(".*?").*/$1/s; print "$_\n"; ' file
0
задан 28 April 2018 в 19:28

0 ответов

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

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