Fedora Linux - Argumenty příkazů #07
Obsah:
- Syntaxe příkazu Grep
- Jak používat
grep
k hledání řetězce v souborech - Invertovat shodu (Vyloučit)
- Jak používat Grep k hledání řetězce ve výstupním příkazu
- Rekurzivní vyhledávání
- Zobrazit pouze název souboru
- Vyhledávání bez rozlišování velkých a malých písmen
- Hledejte úplná slova
- Zobrazit čísla linek
- Počet shody
- Vyhledat více řetězců (vzory)
- Tichý režim
- Základní regulární výraz
- Rozšířené regulární výrazy
- Tisk čar před zápasem
- Tisk čar po zápase
- Závěr
Příkaz
grep
který znamená „globální tisk regulárních výrazů“, je jedním z nejvýkonnějších a nejčastěji používaných příkazů v systému Linux.
Grep prohledává jeden nebo více vstupních souborů pro řádky, které odpovídají danému vzoru, a zapisuje každý odpovídající řádek na standardní výstup. Pokud nejsou zadány žádné soubory,
grep
přečte ze standardního vstupu, který je obvykle výstupem jiného příkazu.
V tomto tutoriálu vám ukážeme, jak používat příkaz
grep
prostřednictvím praktických příkladů a podrobných vysvětlení nejběžnějších možností GNU
grep
.
Syntaxe příkazu Grep
Než se podíváme na to, jak používat příkaz
grep
, začneme kontrolou základní syntaxe.
Výrazy
grep
utility mají následující podobu:
grep PATTERN
Položky v hranatých závorkách jsou volitelné.
-
OPTIONS
- Nula nebo více možností. Grep poskytuje řadu možností, které řídí jeho chování.PATTERN
- Hledání vzoru.FILE
- Nula nebo více názvů vstupních souborů.
Aby uživatel mohl soubor prohledávat, musí mít uživatel, který příkaz spouští, přístup ke čtení.
Jak používat
grep
k hledání řetězce v souborech
Nejzákladnějším použitím příkazu
grep
je hledání řetězce (textu) v souboru.
Chcete-li například zobrazit řádky ze souboru
/etc/passwd
obsahující řetězec
bash
, můžete použít následující příkaz:
grep bash /etc/passwd
Výstup by měl vypadat asi takto:
root:x:0:0:root:/root:/bin/bash linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
Pokud řetězec obsahuje mezery, musíte jej uzavřít do jednoduchých nebo dvojitých uvozovek:
grep "Gnome Display Manager" /etc/passwd
Invertovat shodu (Vyloučit)
Chcete-li zobrazit čáry, které neodpovídají vzoru, použijte volbu
-v
(nebo -
--invert-match
).
Chcete-li například zobrazit řádky ze souboru
/etc/passwd
, které neobsahují řetězec
nologin
, můžete použít následující příkaz:
grep -v nologin /etc/passwd
root:x:0:0:root:/root:/bin/bash colord:x:124:124::/var/lib/colord:/bin/false git:x:994:994:git daemon user:/:/usr/bin/git-shell linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
Jak používat Grep k hledání řetězce ve výstupním příkazu
Místo zadání vstupních souborů můžete poslat výstup jiného příkazu do
grep
a pak zobrazit pouze řádky odpovídající danému vzoru.
Chcete-li například zjistit, které procesy ve vašem systému běží jako uživatel
www-data
, můžete použít následující příkaz
ps
:
ps -ef | grep www-data
www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process
Můžete také zřetězit více potrubí na příkaz. Jak je vidět na výstupu výše, existuje také řádek obsahující proces
grep
. Pokud nechcete, aby se tento řádek zobrazoval, předejte výstup do jiné
grep
instance, jak je ukázáno níže.
ps -ef | grep www-data | grep -v grep
www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www root 18272 17714 0 16:00 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn www-data www-data 31147 12770 0 Oct22 ? 00:05:51 nginx: worker process www-data 31148 12770 0 Oct22 ? 00:00:00 nginx: cache manager process
Rekurzivní vyhledávání
Chcete-li rekurzivně hledat vzorek, použijte volbu
-r
(nebo
--recursive
). Tím se prohledají všechny soubory v zadaném adresáři a přeskočí se na odkazy, které se vyskytují rekurzivně. Chcete-li sledovat všechny symbolické odkazy, použijte volbu
-R
(nebo
--dereference-recursive
).
V následujícím příkladu hledáme řetězec
linuxize.com
ve všech souborech v adresáři
/etc
:
grep -r linuxize.com /etc
Příkaz vytiskne odpovídající řádky předponou úplnou cestou k souboru.
/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com;
Pokud místo toho použijete volbu
-R
grep
bude následovat všechny symbolické odkazy:
grep -R linuxize.com /etc
Všimněte si posledního řádku výstupu. Tento řádek není ve výše uvedeném příkladu vytištěn, protože soubory uvnitř adresáře s
sites-enabled
Nginx jsou odkazy na konfigurační soubory uvnitř adresáře s
sites-available
.
/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com; /etc/nginx/sites-enabled/linuxize.com: server_name linuxize.com www.linuxize.com;
Zobrazit pouze název souboru
Chcete-li potlačit výchozí výstup
grep
a tisknout pouze názvy souborů obsahujících odpovídající vzor, můžete použít volbu
-l
(nebo
--files-with-matches
).
Například prohledávat všechny soubory končící na
.conf
v aktuálním pracovním adresáři a tisknout pouze názvy souborů obsahujících typ řetězce
linuxize.com
:
grep -l linuxize.com *.conf
Výstup bude vypadat asi takto:
tmux.conf haproxy.conf
Možnost
-l
se obvykle používá v kombinaci s rekurzivní volbou
-R
:
Vyhledávání bez rozlišování velkých a malých písmen
Ve výchozím nastavení příkaz
grep
rozlišuje velká a malá písmena. To znamená, že velká a malá písmena jsou považována za zřetelná.
Chcete-li při vyhledávání ignorovat případ, použijte volbu
-i
(nebo
--ignore-case
).
Například při hledání
Zebra
bez jakékoli možnosti, následující příkaz nezobrazí žádný výstup, tj. Existují odpovídající řádky:
grep Zebra /usr/share/words
Pokud však provedete vyhledávání nerozlišující velká a malá písmena pomocí volby
-i
, bude se shodovat velká i malá písmena:
grep -i Zebra /usr/share/words
Zadáním slova „Zebra“ bude odpovídat „zebra“, „ZEbrA“ nebo jakékoli jiné kombinaci velkých a malých písmen pro daný řetězec.
Hledejte úplná slova
Při hledání výrazu „gnu“
grep
vytiskne také řádky, ve kterých je výraz „gnu“ vložen většími slovy, například „cygnus“ nebo „magnum“.
grep gnu /usr/share/words
cygnus gnu interregnum lgnu9d lignum magnum magnuson sphagnum wingnut
Chcete-li vrátit pouze ty řádky, ve kterých je zadaný řetězec celé slovo (uzavřené jinými slovy než znaky), použijte volbu
-w
(nebo
--word-regexp
).
az
,
AZ
a
0-9
) a podtržítka (
_
). Všechny ostatní znaky jsou považovány za jiné slovo.
grep -w gnu /usr/share/words
Zobrazit čísla linek
Chcete-li zobrazit počet řádků, které obsahují řetězec, který odpovídá vzoru, použijte volbu
-n
(nebo
--line-number
). Při použití této možnosti
grep
vytiskne zápasy na standardní výstup s předponou s číslem řádku, na kterém bylo nalezeno.
Chcete-li například zobrazit řádky ze souboru
/etc/services
obsahující řetězec
bash
s předponou odpovídajícím číslem řádku, můžete použít následující příkaz:
grep -n 10000 /etc/services
Výstup níže ukazuje, že shody jsou nalezeny na řádcích 10423 a 10424.
10423:ndmp 10000/tcp 10424:ndmp 10000/udp
Počet shody
Chcete-li vytisknout počet odpovídajících řádků na standardní výstup, použijte volbu
-c
(nebo
--count
).
V níže uvedeném příkladu spočítáme počet účtů, které mají jako shell shell
/usr/bin/zsh
.
grep -c '/usr/bin/zsh' /etc/passwd
Vyhledat více řetězců (vzory)
Pomocí operátoru OR
|
lze spojit dva nebo více vzorů vyhledávání.
Ve výchozím nastavení interpretuje
grep
vzor jako základní regulární výraz, kde meta-znaky, jako je
|
ztratí svůj zvláštní význam a je nutné použít jejich zpětně lomené verze.
V níže uvedeném příkladu prohledáváme všechny výskyty slov
fatal
,
error
a
critical
v souboru chyb protokolu Nginx:
grep 'fatal\|error\|critical' /var/log/nginx/error.log
grep -E 'fatal|error|critical' /var/log/nginx/error.log
Tichý režim
-q
(nebo
--quiet
) říká
grep
aby na terminál nic nenapsal (standardní výstup). Pokud je nalezena shoda, příkaz skončí se stavem
0
. To je užitečné při použití
grep
ve shell skriptech, kde chcete zkontrolovat, zda soubor obsahuje řetězec a provést určitou akci v závislosti na výsledku.
Zde je příklad použití
grep
v tichém režimu jako testovacího příkazu v příkazu
if
:
if grep -q PATTERN filename then echo pattern found else echo pattern not found fi
Základní regulární výraz
GNU Grep má dvě sady funkcí regulárních výrazů, základní a rozšířenou. Ve výchozím nastavení interpretuje
grep
vzor jako základní regulární výraz.
Při použití v základním režimu regulárních výrazů jsou všechny ostatní znaky kromě meta-znaků ve skutečnosti regulární výrazy, které se shodují. Níže je uveden seznam nejčastěji používaných meta-znaků:
-
Použijte symbol
^
(stříška) k přiřazení výrazu na začátku řádku. V následujícím příkladu bude řetězec^kangaroo
odpovídat, pouze pokud k němu dojde na samém začátku řádku.grep "^kangaroo" file.txt
Použijte symbol
$
(dolar) k přiřazení výrazu na konci řádku. V následujícím příkladu bude řetězeckangaroo$
odpovídat, pouze pokud k němu dojde na samém konci řádku.grep "kangaroo$" file.txt
Použijte
.
(tečka) symbol, který odpovídá jednomu znaku. Chcete-li například porovnat vše, co začíná nakan
pak má dva znaky a končí řetězcemroo
, můžete použít následující vzorec:grep "kan..roo" file.txt
Použití
accept
nebo „accent
, můžete použít následující vzor:grep "accet" file.txt
Použití
co(any_letter_except_l)a
, jako jecoca
,cobalt
atd., Ale nebude odpovídat řádkům obsahujícímcola
,grep "coa" file.txt
Chcete-li uniknout zvláštnímu významu dalšího znaku, použijte symbol
\
(zpětné lomítko).
Rozšířené regulární výrazy
K interpretaci vzoru jako rozšířeného regulárního výrazu použijte volbu
-E
(nebo
--extended-regexp
). Rozšířené regulární výrazy zahrnují všechny základní meta-znaky spolu s dalšími meta-znaky pro vytvoření složitějších a výkonnějších vzorů vyhledávání. Níže uvádíme několik příkladů:
-
Porovnejte a rozbalte všechny e-mailové adresy z daného souboru:
grep -E -o "\b+@+\.{2, 6}\b" file.txt
Porovnejte a extrahujte všechny platné adresy IP z daného souboru:
grep -E -o '(25|2|??)\.(25|2|??)\.(25|2|??)\.(25|2|??)' file.txt
Možnost
-o
se používá k tisku pouze odpovídajícího řetězce.
Tisk čar před zápasem
Chcete-li vytisknout určitý počet řádků před odpovídajícími řádky, použijte volbu
-B
(nebo
--before-context
).
Například pro zobrazení pěti řádků úvodního kontextu před odpovídajícími řádky byste použili následující příkaz:
Tisk čar po zápase
Chcete-li vytisknout určitý počet řádků po odpovídajících řádcích, použijte volbu
-A
(nebo
--after-context
).
Například pro zobrazení pěti řádků koncového kontextu po odpovídajících řádcích byste použili následující příkaz:
Závěr
Příkaz
grep
vám umožní vyhledat vzor uvnitř souborů. Pokud je nalezena shoda, grep vytiskne řádky obsahující zadaný vzor.
O Grepovi se dozvíte mnohem více na stránce Grep User's Manual.
grep terminálTento nástroj pro naladění všeho v jednom zahrnuje téměř všechny funkce optimalizace, které si můžete představit. Ať už hledáte vyčistit Registr, vyčistit zbytečné programy, které běží při spuštění, obnovit soubory, defragmentovat pevný disk nebo provádět jednoduchou optimalizaci jedním kliknutím, najdete ji v programu Ashampoo WinOptimizer. A najdete ještě mnohem víc.

Ashampoo WinOptimizer vykopává do vašeho systému docela hluboko a najde vylepšení, které ostatní optimizátoři chybí. Například, když si vyladíte spouštění, nekontroluje jen zbytečné programy, jak to dělají někteří další optimizátoři. Vyhledává také služby, které nemusí být spuštěny, například službu pro zadávání dat Tablet PC. Pokud nemáte tablet PC, tuto službu nepotřebujete, ale často ji načítá při spuštění.
Najděte rodinu nebo přátele na iphone / ios a najděte přátele

Přehled funkce Najít přátele a některé z jejích překvapivě užitečných funkcí, které vám pomohou snadno najít rodinu nebo přátele.
Najděte velké soubory v Linuxu

V průběhu času se může vaše disková jednotka zaplnit mnoha zbytečnými soubory, které zabírají velké množství místa na disku. Tento tutoriál vysvětluje, jak najít největší soubory a adresáře v systémech Linux pomocí příkazů find a du.