GNU/Linux >> Linux Esercitazione >  >> Linux

Come trovare righe contenenti una stringa in Linux

/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

Linux
  1. Come usare TROVA in Linux

  2. Come trovare un file in Linux

  3. Come trovare testo specifico usando GREP su Linux

  4. Come trovare file contenenti due stringhe insieme in Linux?

  5. Come faccio a sapere quanto tempo fa è stato installato un sistema Linux?

Come trovare una stringa in un file su Linux

Come trovare l'indirizzo IP in Linux

Come trovare il nome host in Linux

Come trovare file contenenti una stringa di testo specifica in Linux

Come trovare le righe più lunghe in un file in Linux

Come usare grep in Linux