/tmp/miofile
first line text
wanted text
other text
il comando
$ grep -n "wanted text" /tmp/myfile | awk -F ":" '{print $1}'
2
Il -n
switch to grep antepone ogni riga corrispondente al numero di riga (seguito da :
), mentre il secondo comando utilizza i due punti come separatore di colonna (-F ":"
) e stampa la prima colonna di qualsiasi riga. Il risultato finale è l'elenco dei numeri di riga con una corrispondenza.
Oltre a grep
, puoi anche utilizzare altre utilità come awk
o sed
Ecco alcuni esempi. Diciamo che vuoi cercare una stringa is
nel file denominato GPL
.
Il tuo file di esempio
[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]:~$
1. grep
[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]:~$
2. awk
[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]:~$
3. sed
[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]:~$
Spero che questo aiuti
La famiglia di comandi grep (inclusi egrep, fgrep) è la solita soluzione per questo.
$ grep pattern filename
Se stai cercando il codice sorgente, allora ack potrebbe essere una scommessa migliore. Cercherà automaticamente le sottodirectory ed eviterà i file che normalmente non cercheresti (oggetti, directory SCM ecc.)
Il solito modo per farlo è con grep
, che utilizza un pattern regex per abbinare le righe:
grep 'pattern' file
Verrà emessa ogni riga che corrisponde al modello. Se vuoi cercare solo stringhe fisse, usa grep -F 'pattern' file
. fgrep
è una scorciatoia per grep -F
.
Puoi anche usare sed
:
sed -n '/pattern/p' file
Oppure awk
:
awk '/pattern/' file