/tmp/monfichier
first line text
wanted text
other text
la commande
$ grep -n "wanted text" /tmp/myfile | awk -F ":" '{print $1}'
2
Le -n
passer à grep ajoute toute ligne correspondante avec le numéro de ligne (suivi de :
), tandis que la deuxième commande utilise les deux-points comme séparateur de colonnes (-F ":"
) et imprime la première colonne de n'importe quelle ligne. Le résultat final est la liste des numéros de ligne avec une allumette.
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
[email protected]:~$ 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;
[email protected]:~$
[email protected]:~$ 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
[email protected]:~$
[email protected]:~$ 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
[email protected]:~$
[email protected]:~$ 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
[email protected]:~$
J'espère que cela vous aidera
La famille de commandes grep (y compris egrep, fgrep) est la solution habituelle pour cela.
$ 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 rechercheriez normalement pas (objets, répertoires SCM, etc.)
La manière habituelle de le faire est avec grep
, qui utilise un modèle regex pour faire correspondre les lignes :
grep 'pattern' file
Chaque ligne qui correspond au motif sera sortie. Si vous souhaitez rechercher uniquement des chaînes fixes, utilisez grep -F 'pattern' file
. fgrep
est un raccourci pour grep -F
.
Vous pouvez également utiliser sed
:
sed -n '/pattern/p' file
Ou awk
:
awk '/pattern/' file