Используя grep для поиска текстов с одинарной кавычкой?

Я использую текстовый редактор Gedit со встроенным терминалом в Ubuntu 12.04. Я пытаюсь найти какой-нибудь текст с помощью grep. Я хочу найти эту строку кода

'type' => 'select'

Я пытался:

grep -r '\'type\' => \'select\''

Но grep не дал никаких результатов.

Так может ли кто-нибудь сказать мне, как искать код выше?

14
задан 15.05.2020, 16:56

3 ответа

Окружите свою строку поиска двойными кавычками:

grep "'type' => 'select'"
17
ответ дан 15.05.2020, 16:57

cd к каталогу, который содержит Ваш .txt файл

cd /path 

Тогда:

можно использовать grep "'type' => 'select'" name.txt

или:

`grep "'type' => 'select'" /path/file.txt

Вывод:

enter image description here

1
ответ дан 15.05.2020, 16:58
  • 1
    @Chris, действительно, с -r опция (как записи OP), имя файла не необходимо. – SpaceDog 15.05.2020, 16:58
  • 2
    Вопрос только касается одинарных кавычек, не структуры каталогов или любого из grep ' s другая (немного несоответствующая) функциональность. – joan 15.05.2020, 16:59

Вы не можете выйти из одинарных кавычек, которые появляются в одинарных кавычках. Как объяснено в [колотят руководство]: ( http://www.gnu.org/software/bash/manual/bashref.html#Single-Quotes ):

символы Включения в одинарных кавычках (†˜'’) сохраняет литеральное значение каждого символа в кавычках. одинарная кавычка А не может произойти между одинарными кавычками, даже когда предшествуется обратной косой чертой .

Так, необходимо использовать разные подходы:

  1. двойные кавычки Использования:

    grep  "'type' => 'select'" file 
    
  2. , Если Вы предпочитаете напрасно сложные решения:

    grep  "'"type"'"\ =\>\ "'"select"'" file 
    
  3. можно всегда искать любой отдельный символ вместо того, чтобы определить одинарные кавычки:

    grep  '.type. => .select.' file 
    

, Но просто используют ", это делает вещи намного более простыми.

7
ответ дан 15.05.2020, 16:58
  • 1
    @AubreyRobertson I' d нужен пример для ответа правильно. Если Вы хотите найти что-то как строка $var, Вы могли бы сделать grep '$var' file.php в одинарных кавычках. Для большего количества детали отправьте новый вопрос и оставьте меня комментарием здесь. I' d быть рад помочь. – Community 15.05.2020, 16:59
  • 2
    Что, если строка I' m поиск находится в php файле и содержит переменные? I' m действительно борющийся с этим. – Erik van der Neut 15.05.2020, 16:59
  • 3
    Я понял его. Это wasn' t знаки доллара, которые были неуклюжими мой grep, это были ссылки на массив (квадратные скобки), потому что grep использует тех для regex. Это - строка, которую я пробовал к grep: $output = $info['function']($variables); я просто должен был выйти из них правильно с двойной обратной косой чертой. Это - моя команда grep, в конце концов, сказанная и сделанная: targetstring="\$output = \$info\\['function'\\](\$variables);" targetlinenumber=`grep -n "$targetfile" -e "$targetstring" | cut -d :f 1` – Tejinder 15.05.2020, 17:00

Теги

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