Linux లో grep ఆదేశాన్ని ఎలా ఉపయోగించాలి

లైనక్స్ grep కమాండ్ అనేది బహుళ ఫైళ్ళ నుండి సరిపోలే పంక్తులను ప్రదర్శించే స్ట్రింగ్ మరియు నమూనా సరిపోలిక యుటిలిటీ. ఇది ఇతర ఆదేశాల నుండి పైప్డ్ అవుట్‌పుట్‌తో కూడా పనిచేస్తుంది. ఎలాగో మేము మీకు చూపిస్తాము.

గ్రెప్ వెనుక కథ

ది grep మూడు కారణాల వల్ల లైనక్స్ మరియు యునిక్స్ సర్కిల్‌లలో కమాండ్ ప్రసిద్ధి చెందింది. మొదట, ఇది చాలా ఉపయోగకరంగా ఉంటుంది. రెండవది, ఎంపికల సంపద అధికంగా ఉంటుంది. మూడవదిగా, ఇది ఒక నిర్దిష్ట అవసరాన్ని తీర్చడానికి రాత్రిపూట వ్రాయబడింది. మొదటి రెండు బ్యాంగ్ ఆన్; మూడవది కొద్దిగా ఆఫ్.

కెన్ థాంప్సన్ రెగ్యులర్ ఎక్స్‌ప్రెషన్ సెర్చ్ సామర్ధ్యాలను సేకరించారు ed ఎడిటర్ (ఈ-డీ అని ఉచ్ఛరిస్తారు) మరియు టెక్స్ట్ ఫైళ్ళ ద్వారా శోధించడానికి ఒక చిన్న ప్రోగ్రామ్-తన సొంత ఉపయోగం కోసం-సృష్టించాడు. బెల్ ల్యాబ్స్‌లోని అతని విభాగాధిపతి, డౌగ్ మిల్‌రాయ్, థాంప్సన్‌ను సంప్రదించి, తన సహచరులలో ఒకరైన లీ మక్ మహోన్ ఎదుర్కొంటున్న సమస్యను వివరించాడు.

మక్ మహోన్ ఫెడరలిస్ట్ పేపర్ల రచయితలను వచన విశ్లేషణ ద్వారా గుర్తించడానికి ప్రయత్నిస్తున్నాడు. టెక్స్ట్ ఫైళ్ళలో పదబంధాలు మరియు తీగలను శోధించగల సాధనం అతనికి అవసరం. థాంప్సన్ ఆ రోజు సాయంత్రం ఒక గంట గడిపాడు, అతని సాధనాన్ని ఇతరులు ఉపయోగించుకునే సాధారణ యుటిలిటీగా మార్చారు మరియు పేరు మార్చారు grep. అతను పేరును తీసుకున్నాడు ed కమాండ్ స్ట్రింగ్ g / re / p , ఇది "గ్లోబల్ రెగ్యులర్ ఎక్స్‌ప్రెషన్ సెర్చ్" గా అనువదిస్తుంది.

థాంప్సన్ పుట్టుక గురించి బ్రియాన్ కెర్నిఘన్‌తో మాట్లాడటం మీరు చూడవచ్చు grep.

Grep తో సాధారణ శోధనలు

ఫైల్‌లోని స్ట్రింగ్ కోసం శోధించడానికి, కమాండ్ లైన్‌లో శోధన పదాన్ని మరియు ఫైల్ పేరును పాస్ చేయండి:

సరిపోలే పంక్తులు ప్రదర్శించబడతాయి. ఈ సందర్భంలో, ఇది ఒకే పంక్తి. సరిపోలే వచనం హైలైట్ చేయబడింది. ఎందుకంటే చాలా పంపిణీలలో grep దీనికి మారుపేరు ఉంది:

అలియాస్ grep = "grep --colour = auto"

సరిపోయే బహుళ పంక్తులు ఉన్న ఫలితాలను చూద్దాం. మేము అప్లికేషన్ లాగ్ ఫైల్‌లో “సగటు” అనే పదం కోసం చూస్తాము. లాగ్ ఫైల్‌లో పదం చిన్న అక్షరాలలో ఉంటే మాకు గుర్తుకు రాదు కాబట్టి, మేము దాన్ని ఉపయోగిస్తాము -i (కేసును విస్మరించండి) ఎంపిక:

grep -i సగటు గీక్ -1. లాగ్

మ్యాచింగ్ టెక్స్ట్ ప్రతిదానిలో హైలైట్ చేయబడిన ప్రతి మ్యాచింగ్ లైన్ ప్రదర్శించబడుతుంది.

-V (విలోమ మ్యాచ్) ఎంపికను ఉపయోగించి సరిపోలని పంక్తులను ప్రదర్శించవచ్చు.

grep -v Mem geek-1.log

హైలైటింగ్ లేదు ఎందుకంటే ఇవి సరిపోలని పంక్తులు.

మేము కారణం కావచ్చు grep పూర్తిగా నిశ్శబ్దంగా ఉండాలి. ఫలితం తిరిగి వచ్చే విలువగా షెల్‌కు పంపబడుతుంది grep. సున్నా ఫలితం అంటే స్ట్రింగ్ ఉంది కనుగొనబడింది, మరియు దాని ఫలితం దీని అర్థం కాదు కనుగొన్నారు. మేము ఉపయోగించి రిటర్న్ కోడ్‌ను తనిఖీ చేయవచ్చు $? ప్రత్యేక పారామితులు:

grep -q సగటు గీక్ -1.లాగ్
ఎకో $?
grep -q howtogeek geek-1.log
ఎకో $?

గ్రెప్తో పునరావృత శోధనలు

సమూహ డైరెక్టరీలు మరియు ఉప డైరెక్టరీల ద్వారా శోధించడానికి, -r (పునరావృత) ఎంపికను ఉపయోగించండి. మీరు కమాండ్ లైన్‌లో ఫైల్ పేరును అందించలేదని గమనించండి, మీరు తప్పక ఒక మార్గాన్ని అందించాలి. ఇక్కడ మేము ప్రస్తుత డైరెక్టరీలో శోధిస్తున్నాము “.” మరియు ఏదైనా ఉప డైరెక్టరీలు:

grep -r -i memfree.

అవుట్పుట్ ప్రతి మ్యాచింగ్ లైన్ యొక్క డైరెక్టరీ మరియు ఫైల్ పేరును కలిగి ఉంటుంది.

మేము చేయవచ్చుgrep ఉపయోగించడం ద్వారా సింబాలిక్ లింక్‌లను అనుసరించండి -ఆర్ (పునరావృత డీరెఫరెన్స్) ఎంపిక. ఈ డైరెక్టరీలో మాకు సింబాలిక్ లింక్ ఉంది లాగ్స్-ఫోల్డర్. ఇది సూచిస్తుంది / హోమ్ / డేవ్ / లాగ్స్.

ls -l లాగ్స్-ఫోల్డర్

దీనితో మా చివరి శోధనను పునరావృతం చేద్దాం-ఆర్ (పునరావృత డీరెఫరెన్స్) ఎంపిక:

grep -R -i memfree.

సింబాలిక్ లింక్ అనుసరించబడుతుంది మరియు అది సూచించే డైరెక్టరీ ద్వారా శోధించబడుతుంది grep చాలా.

మొత్తం పదాల కోసం శోధిస్తోంది

అప్రమేయంగా, grep శోధన లక్ష్యం ఆ పంక్తిలో ఎక్కడైనా కనిపిస్తే, మరొక స్ట్రింగ్‌తో సహా సరిపోతుంది. ఈ ఉదాహరణ చూడండి. మేము “ఉచిత” అనే పదం కోసం శోధించబోతున్నాము.

grep -i free geek-1.log

ఫలితాలు వాటిలో “ఉచిత” స్ట్రింగ్ ఉన్న పంక్తులు, కానీ అవి ప్రత్యేక పదాలు కాదు. అవి “మెమ్‌ఫ్రీ” స్ట్రింగ్‌లో భాగం.

బలవంతంగా grep ప్రత్యేక “పదాలను” మాత్రమే సరిపోల్చడానికి, ఉపయోగించండి -w (word regexp) ఎంపిక.

grep -w -i ఉచిత గీక్ -1.లాగ్
ఎకో $?

ఈసారి ఫలితాలు లేవు ఎందుకంటే “ఉచిత” అనే శోధన పదం ఫైల్‌లో ప్రత్యేక పదంగా కనిపించదు.

బహుళ శోధన నిబంధనలను ఉపయోగించడం

ది -ఇ (పొడిగించిన regexp) ఎంపిక బహుళ పదాల కోసం శోధించడానికి మిమ్మల్ని అనుమతిస్తుంది. (ది -ఇ ఎంపిక నిలిపివేయబడింది ఉదా యొక్క వెర్షన్ grep.)

ఈ ఆదేశం “సగటు” మరియు “మెమ్‌ఫ్రీ” అనే రెండు శోధన పదాల కోసం శోధిస్తుంది.

grep -E -w -i "సగటు | జ్ఞాపకశక్తి" గీక్ -1. లాగ్

ప్రతి శోధన పదాలకు సరిపోయే పంక్తులన్నీ ప్రదర్శించబడతాయి.

మీరు మొత్తం పదాలు కానటువంటి బహుళ పదాల కోసం కూడా శోధించవచ్చు, కానీ అవి మొత్తం పదాలు కూడా కావచ్చు.

ది -e (నమూనాలు) ఎంపిక కమాండ్ లైన్‌లో బహుళ శోధన పదాలను ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది. శోధన నమూనాను సృష్టించడానికి మేము సాధారణ వ్యక్తీకరణ బ్రాకెట్ లక్షణాన్ని ఉపయోగిస్తున్నాము. ఇది చెబుతుంది grep “[] బ్రాకెట్లలోని అక్షరాలలో దేనినైనా సరిపోల్చడానికి. దీని అర్ధం grep ఇది శోధిస్తున్నప్పుడు “kB” లేదా “KB” తో సరిపోతుంది.

రెండు తీగలను సరిపోల్చారు మరియు వాస్తవానికి, కొన్ని పంక్తులు రెండు తీగలను కలిగి ఉంటాయి.

సరిగ్గా సరిపోయే పంక్తులు

ది-x (line regexp) ఉన్న పంక్తులతో మాత్రమే సరిపోతుంది మొత్తం లైన్ శోధన పదంతో సరిపోతుంది. లాగ్ ఫైల్‌లో ఒక్కసారి మాత్రమే కనిపిస్తుంది అని మాకు తెలిసిన తేదీ మరియు సమయ స్టాంప్ కోసం శోధించండి:

grep -x "20-Jan - 06 15:24:35" geek-1.log

సరిపోయే సింగిల్ లైన్ కనుగొనబడింది మరియు ప్రదర్శించబడుతుంది.

దానికి వ్యతిరేకం ఆ పంక్తులను మాత్రమే చూపిస్తుంది చేయవద్దు మ్యాచ్. మీరు కాన్ఫిగరేషన్ ఫైళ్ళను చూస్తున్నప్పుడు ఇది ఉపయోగపడుతుంది. వ్యాఖ్యలు చాలా బాగున్నాయి, అయితే కొన్నిసార్లు వాటిలో అన్నిటిలో అసలు సెట్టింగులను గుర్తించడం కష్టం. ఇక్కడ ఉంది / etc / sudoers ఫైల్:

మేము ఇలాంటి వ్యాఖ్య పంక్తులను సమర్థవంతంగా ఫిల్టర్ చేయవచ్చు:

sudo grep -v "#" / etc / sudoers

అన్వయించడం చాలా సులభం.

సరిపోలిక వచనాన్ని మాత్రమే ప్రదర్శిస్తుంది

సరిపోలే వచనాన్ని మీరు చూడకూడదనుకునే సందర్భం ఉండవచ్చు. ది -o (సరిపోలిక మాత్రమే) ఎంపిక అది చేస్తుంది.

grep -o MemFree geek-1.log

మొత్తం సరిపోలిక రేఖకు బదులుగా, శోధన పదానికి సరిపోయే వచనాన్ని మాత్రమే చూపించడానికి ప్రదర్శన తగ్గించబడుతుంది.

Grep తో లెక్కింపు

grep ఇది కేవలం టెక్స్ట్ గురించి కాదు, ఇది సంఖ్యా సమాచారాన్ని కూడా అందిస్తుంది. మేము చేయవచ్చు grep మాకు వివిధ మార్గాల్లో లెక్కించండి. ఒక ఫైల్‌లో శోధన పదం ఎన్నిసార్లు కనిపిస్తుందో తెలుసుకోవాలంటే, మనం దాన్ని ఉపయోగించవచ్చు -సి (కౌంట్) ఎంపిక.

grep -c సగటు గీక్ -1.లాగ్

grep ఈ ఫైల్‌లో శోధన పదం 240 సార్లు కనిపిస్తుంది అని నివేదిస్తుంది.

మీరు చేయవచ్చు grep ఉపయోగించి ప్రతి సరిపోలే పంక్తికి పంక్తి సంఖ్యను ప్రదర్శించండి -n (పంక్తి సంఖ్య) ఎంపిక.

grep -n Jan geek-1.log

సరిపోలే ప్రతి పంక్తికి పంక్తి సంఖ్య పంక్తి ప్రారంభంలో ప్రదర్శించబడుతుంది.

ప్రదర్శించబడే ఫలితాల సంఖ్యను తగ్గించడానికి, ఉపయోగించండి -ఎమ్ (గరిష్ట గణన) ఎంపిక. మేము అవుట్పుట్‌ను ఐదు సరిపోలే పంక్తులకు పరిమితం చేయబోతున్నాం:

grep -m5 -n Jan geek-1.log

సందర్భాన్ని కలుపుతోంది

ప్రతి మ్యాచింగ్ పంక్తికి కొన్ని అదనపు పంక్తులను-బహుశా సరిపోలని పంక్తులను చూడగలగడం తరచుగా ఉపయోగపడుతుంది. మీకు ఆసక్తి ఉన్న సరిపోలిన పంక్తులలో ఏది వేరు చేయాలో ఇది సహాయపడుతుంది.

మ్యాచింగ్ లైన్ తర్వాత కొన్ని పంక్తులను చూపించడానికి, -A (సందర్భం తరువాత) ఎంపికను ఉపయోగించండి. ఈ ఉదాహరణలో మేము మూడు పంక్తులు అడుగుతున్నాము:

grep -A 3 -x "20-Jan-06 15:24:35" geek-1.log

మ్యాచింగ్ లైన్ ముందు నుండి కొన్ని పంక్తులను చూడటానికి, ఉపయోగించండి -బి (సందర్భం ముందు) ఎంపిక.

grep -B 3 -x "20-Jan-06 15:24:35" geek-1.log

మరియు మ్యాచింగ్ లైన్ ముందు మరియు తరువాత నుండి పంక్తులను చేర్చడానికి -సి (సందర్భం) ఎంపిక.

grep -C 3 -x "20-Jan-06 15:24:35" geek-1.log

సరిపోలే ఫైళ్ళను చూపుతోంది

శోధన పదాన్ని కలిగి ఉన్న ఫైళ్ళ పేర్లను చూడటానికి, ఉపయోగించండి -l (మ్యాచ్‌తో ఫైళ్లు) ఎంపిక. ఏ సి సోర్స్ కోడ్ ఫైళ్ళలో సూచనలు ఉన్నాయో తెలుసుకోవడానికి sl.h. హెడర్ ఫైల్, ఈ ఆదేశాన్ని ఉపయోగించండి:

grep -l "sl.h" * .సి

ఫైల్ పేర్లు జాబితా చేయబడ్డాయి, సరిపోలే పంక్తులు కాదు.

వాస్తవానికి, శోధన పదాన్ని కలిగి లేని ఫైల్‌ల కోసం మేము చూడవచ్చు. ది -ఎల్ (సరిపోలిక లేని ఫైల్స్) ఎంపిక అది చేస్తుంది.

grep -L "sl.h" * .సి

లైన్ల ప్రారంభ మరియు ముగింపు

మేము బలవంతం చేయవచ్చు grep ఒక పంక్తి ప్రారంభంలో లేదా చివరిలో ఉన్న మ్యాచ్‌లను మాత్రమే ప్రదర్శించడానికి. “^” రెగ్యులర్ ఎక్స్‌ప్రెషన్ ఆపరేటర్ ఒక పంక్తి ప్రారంభానికి సరిపోతుంది. ఆచరణాత్మకంగా లాగ్ ఫైల్‌లోని అన్ని పంక్తులు ఖాళీలను కలిగి ఉంటాయి, కాని మేము వాటి మొదటి అక్షరంగా ఖాళీ ఉన్న పంక్తుల కోసం వెతకబోతున్నాం:

grep "^" geek-1.log

మొదటి అక్షరం వలె ఖాళీ ఉన్న పంక్తులు-పంక్తి ప్రారంభంలో-ప్రదర్శించబడతాయి.

పంక్తి చివరతో సరిపోలడానికి, “$” రెగ్యులర్ ఎక్స్‌ప్రెషన్ ఆపరేటర్‌ని ఉపయోగించండి. మేము “00” తో ముగిసే పంక్తుల కోసం శోధించబోతున్నాము.

grep "00 $" geek-1.log

ప్రదర్శన “00” ఉన్న పంక్తులను వాటి చివరి అక్షరాలుగా చూపిస్తుంది.

గ్రెప్‌తో పైపులను ఉపయోగించడం

వాస్తవానికి, మీరు ఇన్పుట్ను పైప్ చేయవచ్చు grep , పైపు అవుట్పుట్ grep మరొక ప్రోగ్రామ్‌లోకి, మరియు కలిగి grep పైపు గొలుసు మధ్యలో ఉంది.

మా సి సోర్స్ కోడ్ ఫైళ్ళలో “ఎక్స్‌ట్రాక్ట్ పారామీటర్స్” స్ట్రింగ్ యొక్క అన్ని సంఘటనలను చూడాలనుకుంటున్నాము. చాలా తక్కువ మంది ఉన్నారని మాకు తెలుసు, కాబట్టి మేము అవుట్పుట్ను పైప్ చేస్తాము తక్కువ:

grep "ExtractParameters" * .c | తక్కువ

అవుట్పుట్ లో ప్రదర్శించబడుతుంది తక్కువ.

ఇది ఫైల్ లిస్టింగ్ ద్వారా మరియు ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది తక్కువ శోధన సౌకర్యం.

మేము అవుట్పుట్ నుండి పైప్ చేస్తే grep లోకి wc మరియు ఉపయోగించండి -l (పంక్తులు) ఎంపిక, “ఎక్స్‌ట్రాక్ట్ పారామీటర్లు” ఉన్న సోర్స్ కోడ్ ఫైళ్ళలోని పంక్తుల సంఖ్యను మనం లెక్కించవచ్చు. (మేము దీనిని ఉపయోగించి సాధించగలము grep-సి (కౌంట్) ఎంపిక, కానీ పైపులను ప్రదర్శించడానికి ఇది చక్కని మార్గం grep.)

grep "ExtractParameters" * .c | wc -l

తదుపరి ఆదేశంతో, మేము అవుట్పుట్ నుండి పైప్ చేస్తున్నాము ls లోకి grep మరియు అవుట్పుట్ నుండి పైపింగ్ grep లోకి క్రమబద్ధీకరించు . మేము ప్రస్తుత డైరెక్టరీలో ఫైళ్ళను జాబితా చేస్తున్నాము, వాటిలో “Aug” స్ట్రింగ్ ఉన్నవారిని ఎంచుకుంటాము మరియు వాటిని ఫైల్ పరిమాణం ప్రకారం క్రమబద్ధీకరిస్తాము:

ls -l | grep "Aug" | క్రమబద్ధీకరించు + 4 ఎన్

దానిని విచ్ఛిన్నం చేద్దాం:

  • ls -l: ఉపయోగించి ఫైళ్ళ యొక్క పొడవైన ఫార్మాట్ జాబితాను జరుపుము ls.
  • grep “Aug”: నుండి పంక్తులను ఎంచుకోండి ls వాటిలో “ఆగస్టు” ఉన్న జాబితా. ఇది వారి పేర్లలో “ఆగస్టు” ఉన్న ఫైళ్ళను కూడా కనుగొంటుందని గమనించండి.
  • క్రమబద్ధీకరించు + 4 ఎన్: నాల్గవ కాలమ్‌లో grep నుండి అవుట్‌పుట్‌ను క్రమబద్ధీకరించండి (ఫైల్‌సైజ్).

ఫైల్ పరిమాణం యొక్క ఆరోహణ క్రమంలో, ఆగస్టులో (సంవత్సరంతో సంబంధం లేకుండా) సవరించిన అన్ని ఫైళ్ళ యొక్క క్రమబద్ధీకరించిన జాబితాను మేము పొందుతాము.

సంబంధించినది:Linux లో పైపులను ఎలా ఉపయోగించాలి

grep: తక్కువ ఆదేశం, మిత్రుడు

grep మీ పారవేయడం వద్ద ఒక అద్భుతమైన సాధనం. ఇది 1974 నుండి ప్రారంభమైంది మరియు ఇంకా బలంగా ఉంది, ఎందుకంటే మనకు ఏమి చేయాలో అది అవసరం, మరియు ఏదీ మంచిది కాదు.

కలపడం grep కొన్ని సాధారణ వ్యక్తీకరణలతో-ఫూ దీన్ని నిజంగా తదుపరి స్థాయికి తీసుకువెళుతుంది.

సంబంధించినది:మంచిగా శోధించడానికి మరియు సమయాన్ని ఆదా చేయడానికి ప్రాథమిక రెగ్యులర్ వ్యక్తీకరణలను ఎలా ఉపయోగించాలి


$config[zx-auto] not found$config[zx-overlay] not found