GNU/Linux >> Znalost Linux >  >> Linux

Jak najít řádky obsahující řetězec v linuxu

/tmp/myfile

first line text
wanted text
other text

příkaz

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

-n přepnout na grep připojí jakýkoli odpovídající řádek před číslo řádku (následuje : ), zatímco druhý příkaz používá dvojtečku jako oddělovač sloupců (-F ":" ) a vytiskne první sloupec libovolného řádku. Konečným výsledkem je seznam čísel řádků se shodou.


Kromě grep , můžete také použít další nástroje, jako je awk nebo sed

Zde je několik příkladů. Řekněme, že chcete vyhledat řetězec is v souboru s názvem GPL .

Váš ukázkový soubor

[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. seda

[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]:~$ 

Doufám, že to pomůže


Obvyklým řešením je rodina příkazů grep (včetně egrep, fgrep).

$ grep pattern filename

Pokud hledáte zdrojový kód, pak může být lepší volbou potvrzení. Automaticky prohledá podadresáře a vyhne se souborům, které byste normálně neprohledávali (objekty, adresáře SCM atd.)


Obvyklý způsob, jak toho dosáhnout, je grep , který ke shodě řádků používá vzor regulárních výrazů:

grep 'pattern' file

Výstupem bude každý řádek, který odpovídá vzoru. Pokud chcete hledat pouze pevné řetězce, použijte grep -F 'pattern' file . fgrep je zkratka pro grep -F .

Můžete také použít sed :

sed -n '/pattern/p' file

Nebo awk :

awk '/pattern/' file

Linux
  1. Jak používat FIND v Linuxu

  2. Jak najít soubor v Linuxu

  3. Jak najít textové soubory, které neobsahují text v Linuxu?

  1. Jak najít konkrétní text pomocí GREP v systému Linux

  2. Příkaz Linux:Jak „najít“ pouze textové soubory?

  3. Jak v Linuxu najdu všechny soubory obsahující konkrétní text?

  1. Jak najít soubory obsahující dva řetězce dohromady v Linuxu?

  2. Jak zjistím, před jak dlouhou dobou byl nainstalován systém Linux?

  3. Jak získat řádky, které obsahují řetězec v souboru?