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

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

'type' => 'select'

Я пытался:

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

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

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

20
задан 10 March 2014 в 10:08

3 ответа

Заключите строку поиска в двойные кавычки:

grep "'type' => 'select'"
19
ответ дан 10 March 2014 в 10:08

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

Заключение символов в одинарные кавычки ( '' ') сохраняет буквальное значение каждого символа в кавычках. Одинарные кавычки не могут находиться между одинарными кавычками, даже если им предшествует обратная косая черта .

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

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

     grep "'type'  => 'выберите' "файл
     
  2. Если вы предпочитаете излишне сложные решения:

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

     grep '.type.  => .select. '  файл
     

Но просто используйте ", это упростит задачу.

8
ответ дан 10 March 2014 в 10:08

cd в каталог, содержащий ваш файл .txt

cd /path 

Затем:

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

или:

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

Вывод:

enter image description here

1
ответ дан 10 March 2014 в 10:08

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

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