web-dev-qa-db-fra.com

Comment trouver des lignes contenant une chaîne dans linux

J'ai un fichier sous Linux, j'aimerais afficher des lignes contenant une chaîne spécifique dans ce fichier, comment faire?

33
alwbtc

La manière habituelle de faire ceci est avec grep

grep 'pattern' file
50
knittl

La famille de commandes grep (y compris egrep, fgrep) en est la solution habituelle.

$ grep pattern filename

Si vous recherchez le code source, alors ack peut être un meilleur pari. Il recherchera automatiquement les sous-répertoires et évitera les fichiers que vous ne chercheriez pas normalement (objets, répertoires SCM, etc.)

6
Brian Agnew

/ tmp/myfile

first line text
wanted text
other text

la commande

$ grep -n "wanted text" /tmp/myfile | awk -F  ":" '{print $1}'
2
4
deFreitas

Outre grep, vous pouvez également utiliser d'autres utilitaires tels que awk ou sed

Voici quelques exemples. Supposons que vous souhaitiez rechercher une chaîne is dans le fichier nommé GPL.

Votre exemple de fichier

user@linux:~$ cat -n GPL 
     1    The GNU General Public License is a free, copyleft license for
     2    The licenses for most software and other practical works are designed
     3  the GNU General Public License is intended to guarantee your freedom to
     4  GNU General Public License for most of our software;
user@linux:~$ 

1. grep

user@linux:~$ grep is GPL 
  The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
user@linux:~$ 

2. awk

user@linux:~$ awk /is/ GPL 
  The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
user@linux:~$ 

3. sed

user@linux:~$ sed -n '/is/p' GPL
  The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
user@linux:~$ 

J'espère que cela t'aides

0
Sabrina