У меня есть однострочный файл perl:
perl -pe 'while (/((\(.*?[^)]\))|(".*?"))/g) {print "$1 ";} print "\n"' testdata
Файл testdata
содержит следующее:
"123" (123) 123
Результат:
"123" (123)
"123" (123) 123
Но мне нужно:
"123" (123)
Что могу я сделать?
Гм, Вы могли просто поместить свой запрос (шаблон данных), Вы ищете между этими символами и требуете строго это
'шаблон данных'
независимо от того, что этот шаблон данных содержал бы... даже подстановочные знаки, тогда позволяются также...
это посмотрело бы здесь как часть Вашего намеченного использования Вашей команды как
'"123" (123)'
, или это будет похоже
\'"123" (123) \'
после Вашего комментария, который я добавил следующим образом (не делайте downvote меня - вместо этого остаются конструктивными с Вашим мнением, но не используют Ваши ползунки как в cakepoof), так добавьте или свяжите свою perl-строку с каналом к grep-e следующим образом:
жемчуг-pe, 'в то время как (/(((. ? [^)])) | (". ?"))/g) {печатают "1$";} печатают "\n"' данные тестирования | grep-e '"123" (123)'
или
жемчуг-pe 'в то время как (/(((. ? [^)])) | (". ?"))/g) {печатают "1$";} печатают "\n"' данные тестирования | grep-e \'"123" (123) \'
Как прокомментированный muru:
-p
печать$_
. Если Вы собираетесь сделать свою собственную печать, использовать-n
.
perl -ne 'while (/((\(.*?[^)]\))|(".*?"))/g) {print "$1 ";} print "\n"' testdata