web-dev-qa-db-fra.com

Vous utilisez grep pour rechercher des textes entre guillemets?

J'utilise l'éditeur de texte gedit avec un terminal intégré dans Ubuntu 12.04. J'essaie de rechercher du texte en utilisant grep. Je veux rechercher cette ligne de code

'type' => 'select'

J'ai essayé:

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

Mais grep n'a renvoyé aucun résultat.

Alors quelqu'un peut-il me dire comment bien rechercher le code ci-dessus?

14
newuser

Entourez votre chaîne de recherche de guillemets:

grep "'type' => 'select'"
17
Chris

Vous ne pouvez pas échapper aux guillemets simples qui apparaissent entre guillemets simples. Comme expliqué dans le [manuel bash]: ( http://www.gnu.org/software/bash/manual/bashref.html#Single-Quotes ):

Les caractères entre guillemets simples (‘'') préservent la valeur littérale de chaque caractère entre guillemets. Une citation unique ne peut pas apparaître entre guillemets simples, même si elle est précédée d'une barre oblique inverse .

Donc, vous devez utiliser différentes approches:

  1. Utilisez des guillemets doubles:

    grep  "'type' => 'select'" file 
    
  2. Si vous préférez des solutions inutilement complexes:

    grep  "'"type"'"\ =\>\ "'"select"'" file 
    
  3. Vous pouvez toujours rechercher un seul caractère au lieu de spécifier les guillemets simples:

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

Mais utilisez simplement ", cela rend les choses beaucoup plus simples.

7
terdon

cd vers le répertoire qui contient votre fichier .txt

cd /path 

Ensuite :

vous pouvez utiliser grep "'type' => 'select'" name.txt

ou :

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

Sortie:

enter image description here

1
nux