$ cat aaaa foo "bar" base "ere" fff "fff"ggggg"rr" $ grep -o '"[^"]*"' aaaa "bar" "ere" "fff" "rr"
Выделить все экземпляры цитируемого текста из файла
305
SaltyNuts
Есть ли какой-либо способ grep
или каким-либо другим способом получить все экземпляры текста в каждой паре двойных кавычек в файле? Я видел такие ответы: https://stackoverflow.com/questions/15435056/grep-string-inside-double-quotes, но они не работают в тех случаях, когда каждая строка может содержать произвольное количество строк в кавычках.
Так что для ввода, как это:
Here was some "text over here", and then there was "text over there".
Я хотел бы, чтобы результат был:
"text over here" "text over there"
Не нужно включать сами цитаты.
2 ответа на вопрос
3
barlop
Эта команда прекрасно работает без `P`.
Scott 8 лет назад
1
@ Скотт хорошо ... хотя -P обычно очень полезен, потому что без -P функции регулярных выражений немного примитивны. Например, `echo 1111 | grep -o 1 `все, что запрашивается, это чтобы '1' встречался дважды, но без P или или не будут работать.
barlop 8 лет назад
0
1
pfnuesel
Try:
grep -o '"[^"]*"' /path/to/file
Note: [^"]*
is the non-greedy version of the wildcard (.*
), so you can match more than one occurrence per line.
Это будет соответствовать более чем одному вхождению, хотя, поскольку вы используете термин «не жадная версия», я хотел бы указать вам, что звезда все еще жадная. Если бы вы хотели то, что вы называете не жадным. То, как вы делаете это, то, что вы называете «не жадным», то есть ленивым, было бы `*?` Например `. *?` Я сомневаюсь, что `[^ *] *` будет называться не жадный, хотя, возможно, можно сказать, что он менее жадный, чем `". * "` (если терминология действительно используется таким образом). Но, конечно, насколько терминология идет. * жадный и *? ленивый
barlop 8 лет назад
2
Я эгоистично предпочитаю это из-за отсутствия опции `-P` (не поддерживается в некоторых системах), хотя, конечно,` text` был просто примером, но это можно исправить, просто удалив чертову строку `text` из команда.
SaltyNuts 8 лет назад
1
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
2
.profile в Mac OS X?
-
1
Приостановить все, кроме x задач, интенсивно использующих процессор
-
-
9
"Отсоединить" и "Reattach" Xterms через X сессий?
-
1
Windows дата репрезентация
-
9
grep все файлы .java в каталоге для конкретной строки
-
1
Является ли kill -STOP временной командой?
-
2
Изменить количество строк и столбцов в VT420?
-
10
Как я могу найти в истории bash и повторно запустить команду?
-
2
Можно ли передать выходные данные одной команды двум другим командам?