Linux команда grep - поиск фрагмента текста в файле (файлах).
Talaan ng mga Nilalaman:
- Grep Command Syntax
- Paano gamitin ang
grepupang Maghanap para sa isang String sa Files - Invert Tugma (Ibukod)
- Paano gamitin ang Grep upang Maghanap para sa isang String sa Command Output
- Paghahanap ng Recursive
- Ipakita lamang ang Filename
- Kaso Insensitive Paghahanap
- Maghanap para sa Buong Salita
- Ipakita ang Mga Numero ng Linya
- Bilangin ang Mga Tugma
- Maghanap para sa Maramihang Mga Strings (Mga pattern)
- Quiet Mode
- Pangunahing Regular na Pagpapahayag
- Pinahabang Regular na Pagpapahayag
- I-print ang Mga Linya Bago Isang Tugma
- I-print ang Mga Linya Matapos ang isang Tugma
- Konklusyon
Ang utos ng
grep
na nakatayo para sa "global regular expression print" ay isa sa pinakamalakas at karaniwang ginagamit na utos sa Linux.
Hinahanap ng Grep ang isa o higit pang mga file ng input para sa mga linya na tumutugma sa isang naibigay na pattern at isinusulat ang bawat pagtutugma ng linya sa karaniwang output. Kung walang tinukoy na mga file, binabasa ng
grep
mula sa karaniwang pag-input, na karaniwang ang output ng isa pang utos.
Sa tutorial na ito, ipapakita namin sa iyo kung paano gamitin ang utos ng
grep
pamamagitan ng mga praktikal na halimbawa, at mga detalyadong paliwanag ng mga pinaka-karaniwang pagpipilian ng GNU
grep
.
Grep Command Syntax
Bago magpunta sa kung paano gamitin ang utos ng
grep
, magsimula tayo sa pamamagitan ng pagsusuri sa pangunahing syntax.
Ang mga pagpapahayag ng
grep
utility ay kumukuha ng sumusunod na form:
grep PATTERN
Ang mga item sa square bracket ay opsyonal.
-
OPTIONS- Zero o higit pang mga pagpipilian. Ang Grep ay nagbibigay ng isang bilang ng mga pagpipilian na kinokontrol ang pag-uugali nito.PATTERN- pattern ng Paghahanap.FILE- Zero o higit pang mga pangalan ng file ng pag-input.
Upang maghanap sa file, ang gumagamit na nagpapatakbo ng utos ay dapat basahin ang pag-access sa file.
Paano gamitin ang
grep
upang Maghanap para sa isang String sa Files
Ang pinaka pangunahing paggamit ng utos ng
grep
ay upang maghanap para sa isang string (teksto) sa isang file.
Halimbawa, upang ipakita ang mga linya mula sa
/etc/passwd
file na naglalaman ng string
bash
maaari mong gamitin ang sumusunod na utos:
grep bash /etc/passwd
Ang output ay dapat magmukhang ganito:
root:x:0:0:root:/root:/bin/bash linuxize:x:1000:1000:linuxize:/home/linuxize:/bin/bash
Kung ang string ay may kasamang mga puwang, kailangan mong i-enclose ito sa solong o dobleng marka ng sipi:
grep "Gnome Display Manager" /etc/passwd
Invert Tugma (Ibukod)
Upang ipakita ang mga linya na hindi tumutugma sa isang pattern, gamitin ang pagpipilian na
-v
(o
--invert-match
).
Halimbawa upang ipakita ang mga linya mula sa
/etc/passwd
file na hindi naglalaman ng string
nologin
maaari mong gamitin ang sumusunod na utos:
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
Paano gamitin ang Grep upang Maghanap para sa isang String sa Command Output
Sa halip na tukuyin ang mga file ng input, maaari mong i-pipe ang output ng isa pang utos sa
grep
, at pagkatapos ay ipakita lamang ang mga linya na tumutugma sa isang naibigay na pattern.
Halimbawa, upang malaman kung aling mga proseso ang tumatakbo sa iyong system bilang user
www-data
maaari mong gamitin ang sumusunod na utos ng
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
Maaari mo ring chain ang maraming mga tubo sa utos. Tulad ng nakikita mo sa output sa itaas mayroon ding isang linya na naglalaman ng proseso ng
grep
. Kung hindi mo nais na ipakita ang linya na ipasa ang output sa isa pang halimbawa ng
grep
tulad ng ipinapakita sa ibaba.
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
Paghahanap ng Recursive
Upang maingat na maghanap para sa isang pattern gamitin ang, gamitin ang opsyon na
-r
(o
--recursive
). Ito ay maghanap sa lahat ng mga file sa tinukoy na direktoryo, paglaktaw sa mga symlink na nakatagpo nang maingat. Upang sundin ang lahat ng mga makasagisag na link, gamitin ang opsyon na
-R
(o
--dereference-recursive
).
Sa sumusunod na halimbawa ay hinahanap namin ang string
linuxize.com
sa lahat ng mga file sa loob ng
/etc
direktoryo:
grep -r linuxize.com /etc
Ang utos ay mag-print ng mga linya ng pagtutugma na paunang naihanda ng buong landas sa file.
/etc/hosts:127.0.0.1 node2.linuxize.com /etc/nginx/sites-available/linuxize.com: server_name linuxize.com www.linuxize.com;
Kung sa halip ay gumagamit ka ng
-R
pagpipilian
grep
ay susundin ang lahat ng mga makasagisag na link:
grep -R linuxize.com /etc
Pansinin ang huling linya ng output. Ang linya na iyon ay hindi nakalimbag sa halimbawa sa itaas sapagkat ang mga file sa loob ng direktoryo na
sites-enabled
mga
sites-enabled
ng Nginx ay mga symlink sa mga file ng pagsasaayos sa loob ng direktoryo na
sites-available
ng mga
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;
Ipakita lamang ang Filename
Upang sugpuin ang default na output ng
grep
at i-print lamang ang mga pangalan ng mga file na naglalaman ng naitugma na pattern, maaari mong gamitin ang pagpipilian na
-l
(o
--files-with-matches
).
Halimbawa upang maghanap sa lahat ng mga file na nagtatapos sa
.conf
sa kasalukuyang direktoryo ng nagtatrabaho at i-print lamang ang mga pangalan ng mga file na naglalaman ng uri ng string
linuxize.com
:
grep -l linuxize.com *.conf
Ang output ay magiging hitsura ng isang bagay tulad nito:
tmux.conf haproxy.conf
Ang opsyon na
-l
ay karaniwang ginagamit kasama ng pagpipiliang muli sa recursive
-R
:
Kaso Insensitive Paghahanap
Bilang default, ang utos ng
grep
ay sensitibo sa kaso. Nangangahulugan ito na ang mga character sa malalaking titik at malalaking titik ay itinuturing na naiiba.
Upang huwag pansinin ang kaso kapag naghahanap, gamitin ang
-i
pagpipilian (o
--ignore-case
).
Halimbawa, kapag naghahanap para kay
Zebra
walang anumang pagpipilian, ang sumusunod na utos ay hindi magpapakita ng anumang output ibig sabihin, may mga pagtutugma na linya:
grep Zebra /usr/share/words
Ngunit kung nagsasagawa ka ng isang hindi mapanindik na paghahanap gamit ang pagpipilian na
-i
, tutugma ito sa parehong mga titik sa itaas at mas mababang kaso:
grep -i Zebra /usr/share/words
Ang pagtukoy ng "Zebra" ay tutugma sa "zebra", "ZEbrA" o anumang iba pang kumbinasyon ng mga letra sa itaas at mababang kaso para sa string na iyon.
Maghanap para sa Buong Salita
Kapag naghahanap para sa "gnu",
grep
ay i-print din ang mga linya kung saan ang "gnu" ay naka-embed sa mas malalaking salita, tulad ng "cygnus" o "magnum".
grep gnu /usr/share/words
cygnus gnu interregnum lgnu9d lignum magnum magnuson sphagnum wingnut
Upang ibalik lamang ang mga linyang iyon kung saan ang tinukoy na string ay isang buong salita (nakapaloob sa mga character na hindi salita), gamitin ang pagpipilian na
-w
(o
--word-regexp
).
az
,
AZ
at
0-9
) at mga underscores (
_
). Ang lahat ng iba pang mga character ay itinuturing bilang mga character na hindi salita.
grep -w gnu /usr/share/words
Ipakita ang Mga Numero ng Linya
Upang ipakita ang bilang ng mga linya na naglalaman ng isang string na tumutugma sa isang pattern, gamitin ang pagpipilian na
-n
(o -
--line-number
). Kapag ginagamit ang pagpipiliang ito, i-print ng
grep
ang mga tugma sa karaniwang output na prefixed sa numero ng linya na nahanap ito.
Halimbawa upang ipakita ang mga linya mula sa
/etc/services
file ng mga
/etc/services
naglalaman ng string
bash
prefixed sa numero ng pagtutugma na linya maaari mong gamitin ang sumusunod na utos:
grep -n 10000 /etc/services
Ang output sa ibaba ay nagpapakita sa amin na ang mga tugma ay matatagpuan sa mga linya ng 10423 at 10424.
10423:ndmp 10000/tcp 10424:ndmp 10000/udp
Bilangin ang Mga Tugma
Upang mag-print ng isang bilang ng mga linya ng pagtutugma sa karaniwang output, gamitin ang pagpipilian na
-c
(o -
--count
).
Sa halimbawa sa ibaba, binibilang namin ang bilang ng mga account na mayroong
/usr/bin/zsh
bilang isang shell.
grep -c '/usr/bin/zsh' /etc/passwd
Maghanap para sa Maramihang Mga Strings (Mga pattern)
Ang dalawa o higit pang mga pattern ng paghahanap ay maaaring sumali gamit ang OR operator
|
.
Bilang default, binibigyang kahulugan ng
grep
ang pattern bilang isang pangunahing regular na pagpapahayag kung saan ang mga meta-character tulad ng
|
mawala ang kanilang mga espesyal na kahulugan, at dapat gamitin ang kanilang mga backslashed na bersyon.
Sa halimbawa sa ibaba hinahanap namin ang lahat ng mga naganap na mga salitang
fatal
,
error
, at
critical
sa file ng error sa log ng Nginx:
grep 'fatal\|error\|critical' /var/log/nginx/error.log
grep -E 'fatal|error|critical' /var/log/nginx/error.log
Quiet Mode
Ang
--quiet
(o
--quiet
) ay nagsasabi sa
grep
na huwag isulat ang anumang bagay sa terminal (karaniwang output). Kung natagpuan ang isang tugma, ang utos ay lalabas na may katayuan
0
. Ito ay kapaki-pakinabang kapag gumagamit ng
grep
sa mga script ng shell kung saan nais mong suriin kung ang isang file ay naglalaman ng isang string at magsagawa ng isang tiyak na pagkilos depende sa resulta.
Narito ang isang halimbawa ng paggamit ng
grep
sa isang tahimik na mode bilang isang pagsubok sa pagsubok
if
pahayag:
if grep -q PATTERN filename then echo pattern found else echo pattern not found fi
Pangunahing Regular na Pagpapahayag
Ang GNU Grep ay may dalawang regular na set ng tampok na expression, Basic at Pinalawak. Bilang default, binibigyang kahulugan ng
grep
ang pattern bilang isang pangunahing regular na pagpapahayag.
Kapag ginamit sa pangunahing regular na mode ng pagpapahayag, ang lahat ng iba pang mga character maliban sa mga meta-character, ay aktwal na mga ekspresyon na tumutugma sa kanilang sarili. Sa ibaba ay isang listahan ng mga pinaka-karaniwang ginagamit na meta-character:
-
Gumamit ng
^(caret) na simbolo upang tumugma sa expression sa simula ng isang linya. Sa sumusunod na halimbawa, ang string^kangarooay tutugma lamang kung nangyayari ito sa pinakadulo simula ng isang linya.grep "^kangaroo" file.txtGumamit ng simbolo ng
$(dolyar) upang tumugma sa pagpapahayag sa pagtatapos ng isang linya. Sa sumusunod na halimbawa, ang stringkangaroo$ay tutugma lamang kung ito ay nangyayari sa pinakadulo ng isang linya.grep "kangaroo$" file.txtGamitin ang
.(panahon) simbolo upang tumugma sa anumang solong character. Halimbawa, upang tumugma sa anumang nagsisimula sakanpagkatapos ay may dalawang character at nagtatapos sa stringroo, maaari mong gamitin ang sumusunod na pattern:grep "kan..roo" file.txtGumamit
(bracket) upang tumugma sa anumang solong character na nakapaloob sa mga bracket. Halimbawa, hanapin ang mga linya na naglalaman ngaccepto "accent, maaari mong gamitin ang sumusunod na pattern:grep "accet" file.txtGumamit
(bracket) upang tumugma sa anumang solong character na nakapaloob sa mga bracket. Ang sumusunod na pattern ay tutugma sa anumang kumbinasyon ng mga string na naglalaman ngco(any_letter_except_l)a, tulad ngcoca,cobaltat iba pa, ngunit hindi tutugma sa mga linya na naglalaman ngcola,grep "coa" file.txt
Upang makatakas sa espesyal na kahulugan ng susunod na karakter, gamitin ang simbolo na (backslash).
Pinahabang Regular na Pagpapahayag
Upang bigyang-kahulugan ang pattern bilang isang pinahabang regular na pagpapahayag, gamitin ang opsyong
-E
(o
--extended-regexp
). Ang pinalawig na mga regular na expression ay kasama ang lahat ng mga pangunahing meta-character, kasama ang mga karagdagang meta-character upang lumikha ng mas kumplikado at malakas na mga pattern ng paghahanap. Nasa ibaba ang ilang mga halimbawa:
-
Itugma at kunin ang lahat ng mga email address mula sa isang naibigay na file:
grep -E -o "\b+@+\.{2, 6}\b" file.txtItugma at kunin ang lahat ng wastong mga IP address mula sa isang naibigay na file:
grep -E -o '(25|2|??)\.(25|2|??)\.(25|2|??)\.(25|2|??)' file.txt
Ang opsyon na
-o
ay ginagamit upang mai-print lamang ang string ng pagtutugma.
I-print ang Mga Linya Bago Isang Tugma
Upang mag-print ng isang tiyak na bilang ng mga linya bago ang mga linya ng pagtutugma, gamitin ang opsyon na
-B
(o
--before-context
).
Halimbawa, upang ipakita ang limang linya ng nangungunang konteksto bago tumutugma sa mga linya, gagamitin mo ang sumusunod na utos:
I-print ang Mga Linya Matapos ang isang Tugma
Upang mag-print ng isang tiyak na bilang ng mga linya pagkatapos ng mga linya ng pagtutugma, gamitin ang opsyon na
-A
(o -
--after-context
).
Halimbawa upang ipakita ang limang linya ng konteksto ng trailing pagkatapos ng pagtutugma ng mga linya, gagamitin mo ang sumusunod na utos:
Konklusyon
Pinapayagan ka ng utos na
grep
na maghanap para sa isang pattern sa loob ng mga file. Kung isang tugma kung nahanap, grep ay mag-print ng mga linya na naglalaman ng tinukoy na pattern.
Marami pa ang dapat malaman tungkol sa Grep sa pahina ng Manwal na Gumagamit ng Grep.
terminal ng grepAng isa pang kasanayan na lumalaki ang katanyagan ay ang paggamit ng mga video game bilang mga tool sa pagsasanay. Ang maraming kaligtasan ng publiko at mga organisasyong militar ay gumagamit ng mga video game upang gayahin ang mga kondisyon ng field. (Halimbawa, ang labanan ng Amerikanong Hukbo ng digmaan, na binuo ng US Army, ay naging isang napakalaking matagumpay na tool sa pagrerekord para sa militar.) Ngunit hindi mo kailangang i-shoot ang Nazis upang makahanap ng halaga para sa mga laro s
Sa Regence Blue Cross / Blue Shield sa Portland, Oregon, ang mga miyembro ng IT department ay nakakakuha ng virtual na "mga token" para sa pagganap ilang mga gawain: Ang pag-reset ng password ng gumagamit ay nagkakahalaga ng 2 mga token. Ang pagpapatupad ng isang cost-saving na ideya ay kumikita ng 30 token. Ang mga empleyado ay maaaring "gastusin" ang mga token na ito upang maglaro ng mga laro ng mabilis at batay sa pagkakataon. Ang mga laro ay higit na katulad sa mga slot machine: Ang mga toke
Ang mahal na tool ng pagsasalin na hindi nag-aalok ng higit pa sa mga serbisyong libreng online. Ang tool ay maaaring mabilis na isalin ang mga teksto, dokumento, at mga pahina sa Web patungo sa at mula sa iba't ibang wika, at maaari (para sa mga seleksyon ng teksto, ngunit hindi mga pahina sa Web) awtomatikong makilala ang orihinal na wika. Ngunit ang dagdag na kaginhawaan nito kumpara sa mga libreng online na tool tulad ng Google Translate ay maaaring hindi nagkakahalaga ng matarik na presyo n
Babala ng Babylon na isalin ang dose-dosenang mga wika, ngunit ang mga salin nito ay maaaring maging spotty. maikling, 2-araw na libreng pagsubok, ngunit kung pipiliin mo ang pagpipiliang Quick install maaari kang makakuha ng higit pa kaysa sa iyong bargained para sa. Bilang default, babaguhin nito ang iyong home page ng browser at ang iyong default na search engine sa Babilonia, at mag-i-install ng isang toolbar na puno ng mga hindi kaugnay na mga link sa ad (tulad ng "Mga Ringtone" at "Mga Lar
Paano gamitin ang facebook na makahanap ng wifi upang makahanap ng mga libreng hotspot
Narito ang isang mabilis na paano sa bagong tampok na Maghanap ng WiFi upang makahanap ng mga libreng hotspot. Tingnan ito!







