Usando o grep para pesquisar textos com aspas simples?

11

Estou usando o editor de texto gedit com terminal embutido no Ubuntu 12.04. Estou tentando procurar algum texto usando grep . Eu quero procurar por esta linha de código

'type' => 'select'

Eu tentei:

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

Mas grep não retornou nenhum resultado.

Então alguém pode me dizer como procurar o código acima?

    
por newuser 10.03.2014 / 06:52

3 respostas

13

Coloque a sua string de pesquisa entre aspas duplas:

grep "'type' => 'select'"
    
por Chris 10.03.2014 / 06:55
6

Você não pode escapar de aspas simples que aparecem entre aspas simples. Como explicado no [bash manual] :( link ):

  

Inserir caracteres entre aspas simples (‘'’) preserva o valor literal de cada caractere entre aspas. Uma aspa única pode não ocorrer entre aspas simples, mesmo quando precedidas por uma barra invertida .

Então, você tem que usar abordagens diferentes:

  1. Use aspas duplas:

    grep  "'type' => 'select'" file 
    
  2. Se você preferir soluções desnecessariamente complexas:

    grep  "'"type"'"\ =\>\ "'"select"'" file 
    
  3. Você sempre pode pesquisar qualquer caractere único em vez de especificar as aspas simples:

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

Mas use apenas " , isso torna as coisas muito mais simples.

    
por terdon 11.03.2014 / 15:54
1

cd no diretório que contém seu arquivo .txt

cd /path 

Então:

você pode usar grep "'type' => 'select'" name.txt

ou:

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

Saída:

    
por nux 10.03.2014 / 07:02