J'ai un fichier sous Linux, j'aimerais afficher des lignes contenant une chaîne spécifique dans ce fichier, comment faire?
La manière habituelle de faire ceci est avec grep
grep 'pattern' file
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.)
/ tmp/myfile
first line text
wanted text
other text
la commande
$ grep -n "wanted text" /tmp/myfile | awk -F ":" '{print $1}'
2
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