/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