Использование grep -rin со строковым значением имеет знак подчеркивания

Я пытаюсь запустить эту команду.

grep -rin "wp_get_attachment_url" *

Но подчеркивания (_) в строчном значении, похоже, испортили команду grep. Как искать строковые значения с символами подчеркивания?

1
задан 2 November 2011 в 03:05

1 ответ

Если wp_get_attachment_url на самом деле является URL-адресом, который должен интерпретироваться буквально, используйте одинарные кавычки, чтобы предотвратить интерпретацию символов интерпретатором оболочки. Кроме того, используйте опцию -F в grep, чтобы избежать интерпретации шаблона как регулярного выражения.

http://example.com/?id=1, интерпретируемое как регулярное выражение, будет соответствовать либо http://example.comid=1, либо http://example.com/id=1, но не http://example.com/?id=1.

Команда становится:

grep -rinF 'http://example.com/?id=1' *

Если шаблон содержит ', используйте '\'', чтобы избежать его:

grep -rinF 'mornin'\'' all' *
]

Подсказка: * соответствует всем не скрытым файлам в текущем каталоге. Если вы хотите совместить точечные файлы, просто рекурсивно переместите текущий каталог (-r):

grep -rinF 'search term' .
1
ответ дан 25 May 2018 в 17:19

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

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