grep ఇది గ్నూ / లైనక్స్ కమాండ్ లైన్లో ఎక్కువగా ఉపయోగించే సాధనాల్లో ఒకటి. చాలా సులభమైన సాధనం అయినప్పటికీ, ఇది పెద్ద సంఖ్యలో ఆపరేషన్లను చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. మునుపటి ఆదేశం యొక్క అవుట్పుట్లో నిర్దిష్ట పాయింట్లను గుర్తించగలిగేలా ఇది పైపులతో కలిపి ఉపయోగించబడుతుంది. -E ఎంపికతో grep ను నడపడానికి సమానమైన egrep అని పిలువబడే ఒక సాధనం కూడా ఉంది.
ఇ "ఎక్స్టెండెడ్ రీజెక్స్" నుండి వచ్చింది, ఇది -E ఎంపికను సక్రియం చేస్తుంది మరియు ఆ ఎంపికను ఉపయోగించకుండా డిఫాల్ట్గా మీరు ఎగ్రెప్లో ఉన్నది. అంటే, మీరు ఉపయోగించవచ్చు విస్తరించిన సాధారణ వ్యక్తీకరణలు. ఈ ట్యుటోరియల్లో నేను రెగ్యులర్ ఎక్స్ప్రెషన్స్ అంటే ఏమిటి, అవి ఎలా వాడవచ్చు మరియు * నిక్స్ లో ఏ రకాలు ఉన్నాయో వివరించడానికి వెళ్ళను. నేను ఉదా. మీరు చేయగలిగే కొన్ని ఉపయోగకరమైన విషయాల యొక్క ఆచరణాత్మక ఉదాహరణలను చూపిస్తాను ...
grep, egrep మరియు fgrep సమానంగా ఉంటాయి. వాస్తవానికి, ఉదా. Grep -E కి సమానం మరియు fgrep grep -F కు సమానం. అంటే, మనకు సంబంధించిన సందర్భంలో, ఇది నమూనాలను సాధారణ వ్యక్తీకరణలుగా కూడా వివరిస్తుంది.
మీరు చెయ్యగలరు పంక్తి లేదా పదం కోసం శోధించండి ఒకటి లేదా అంతకంటే ఎక్కువ ఫైళ్ళలో, grep విషయంలో కూడా. ఉదాహరణకు, మీరు ఉబుంటు అనే పదాన్ని snap.txt అనే ఫైల్లో మరియు ప్రస్తుత డైరెక్టరీలోని అన్ని .txt ఫైళ్ళలో కూడా శోధించాలని imagine హించుకోండి:
egrep ubuntu snap.txt
egrep ubuntu *.txt
శోధన కూడా కావచ్చు పునరావృత ప్రస్తుత డైరెక్టరీ యొక్క మొత్తం విషయాలను శోధించడానికి:
egrep -r "hola mundo" *
ఇప్పటివరకు, ఖచ్చితమైన పదాలు లేదా తీగలను శోధించారు, అనగా, పెద్ద మరియు లోయర్ కేస్ అక్షరాలను (కేస్-సెన్సిటివ్) పరిగణనలోకి తీసుకుంటారు, కానీ మీరు దీన్ని కేస్-ఇన్సెన్సిటివ్ మోడ్లో చేయాలనుకుంటే, అవి పెద్దవిగా లేదా చిన్నవిగా ఉన్నా సరే, మీరు ఈ క్రింది వాటిని ఉపయోగించవచ్చు (మీరు w ని జోడిస్తే అది పూర్తి సరిపోలికలను మాత్రమే కనుగొంటుంది):
egrep -i "ejemplo" documento.txt
egrep -iw "ejemplo" documento.txt
చూపించు, యాదృచ్చికం కాదు, కానీ ఆ సరిపోలికలు కనుగొనబడిన ఫైల్ పేర్లు:
egrep -l hola *.txt
నమూనా లేదా పదాన్ని మాత్రమే చూపించు పత్రంలో శోధించారు:
egrep -o printf hola.c
మీరు can హించే అన్ని అవకాశాలను మీరు ఉపయోగించవచ్చని గుర్తుంచుకోండి. మీరు ఇంతకు మునుపు చూసిన అనేక ఎంపికలను మిళితం చేయవచ్చు లేదా మీరు వాటిని -A n మరియు -B n వంటి ఇతర ఎంపికలతో పూర్తి చేయవచ్చు, ఇక్కడ n మీరు ముందు (ముందు) మరియు తరువాత (తరువాత) చూపించాలనుకుంటున్న పంక్తుల సంఖ్య మ్యాచ్ లేదా రెండూ ఒకే సమయంలో (సి), తద్వారా మ్యాచ్ చుట్టూ ఉన్న వాటిని మీరు చూడవచ్చు:
egrep -A 2 "printf" hola.c
egrep -B 2 "printf" hola.c
egrep -C 2 printf hola.c
సరిపోలికను కలిగి ఉన్న పంక్తులను అణచివేయండి మరియు సరిపోలని వాటిని మాత్రమే చూపించు:
egrep -v "dos" números.doc
లేదా మీరు కావాలనుకుంటే, మీరు ఉపయోగించవచ్చు బహుళ పదాలు లేదా -e తో సరిపోలికలు. ఉదాహరణకు:
egrep -v -e "uno" -e "dos" -e "tres" números.txt
మీరు ఉపయోగిస్తే -c మ్యాచ్ల సంఖ్యను మాత్రమే లెక్కించగలదు, లేదా సరిపోలని పంక్తుల సంఖ్యను చూపించడానికి -v తో విలోమం చేయండి. ఉదాహరణకి:
egrep -c "include" main.c
egrep -v -c "include" main.c
మరియు కూడా పంక్తి సంఖ్యను చూపించు మ్యాచ్ జరిగిన చోట, మరియు అది వరుసగా ఆక్రమించిన స్థానం:
egrep -n "void" hola.c
egrep -o -b "printf" hola.c
మరియు తో పాటు సాధారణ వ్యక్తీకరణలు దాని సామర్థ్యాలను విస్తరించవచ్చు. ఉదాహరణకు, హలోతో ప్రారంభమయ్యే మరియు బైతో ముగుస్తున్న ఒక పంక్తిని కనుగొనండి, లేదా అది హలోతో మొదలవుతుంది మరియు తరువాత ఏదైనా తరువాత మ్యాచ్ బై వరుసగా కనిపిస్తుంది:
* కింది ఆదేశం యొక్క దిద్దుబాటు: రీడర్ యొక్క వ్యాఖ్యకు ధన్యవాదాలు మాన్యువల్ ఆల్కోసర్ లోపం ఉన్నందున నేను ఈ క్రింది ఆదేశాన్ని సవరించగలిగాను.
egrep '^Hola.*adiós$' ejemplo.txt
egrep "Hola.*adiós" ejemplo.txt
మీరు grep తో వ్యత్యాసం గురించి ఆశ్చర్యపోతుంటే, ఇక్కడ మీకు స్పష్టతనిచ్చే ఒక ఉదాహరణ ... -E లేకుండా grep ను ఉపయోగించే సందర్భంలో మీరు ఉపయోగించాలి తప్పించుకునే సన్నివేశాలు తద్వారా ఇది ప్రత్యేక అక్షరాలను వివరిస్తుంది, లేకపోతే వాటిని పరిగణనలోకి తీసుకోకుండా నమూనాను వివరిస్తుంది. మరోవైపు, egrep లేదా grep -E తో అది వాటిని పరిగణనలోకి తీసుకుంటుంది. ఉదాహరణకి:
grep '^no\(fork\|group\)' /etc/group
అది దీనికి సమానం:
grep -E '^no(fork|group)' /etc/group
egrep '^no(fork|group)' /etc/group
అంటే, ఇది నోఫోర్క్ లేదా నోగ్రూప్తో ప్రారంభమయ్యే సరిపోలే పంక్తుల కోసం చూస్తుంది. మీరు తప్పించుకునే సన్నివేశాలు లేకుండా grep యొక్క మొదటి వ్యక్తీకరణను ఉపయోగించినట్లయితే, అది ఏమి చేస్తుంది అనేది శోధన కాంక్రీట్ నమూనా లేదు (ఫోర్క్ | సమూహం):
grep 'no(fork|group)' /etc/group
మీరు కూడా శోధించవచ్చు ఆల్ఫాన్యూమరిక్ పరిధులు, లేదా కొన్ని IP లను గుర్తించడం వంటి నిర్దిష్ట విలువలు:
cat /etc/networks | egrep "192.168.1.[5-9]"
cat /etc/networks | egrep "192.168.[1-3].[5-9]"
cat /etc/networks | egrep "192.168.1.[0-3]|[5-9]"
egrep 192.168.4.[10,40] networks
మీరు కావాలనుకుంటే, మరింత నిర్దిష్ట శోధనలు చేయడానికి మీరు ఇతర సాధారణ వ్యక్తీకరణలను ఉపయోగించవచ్చు. ఉదాహరణకు | ఒకదాన్ని కనుగొనడానికి యాదృచ్చికం లేదా మరొకటి:
egrep -i '^(printf|scanf)' hola.c
మీరు కూడా గుర్తించవచ్చు పెద్ద, చిన్న, అక్షర అక్షరాలు మాత్రమే, లేదా ఆల్ఫాన్యూమరిక్ మొదలైనవి., [: alnum:], [: alpha:], [: digit:], [: lower:], [: print:], [: punct:], [: space:], [: ఎగువ:], మొదలైనవి. ఉదాహరణకు, పెద్ద అక్షరాల కోసం శోధించడానికి:
egrep [[:upper:]] diccioario
ఇది మీకు సహాయపడుతుందని నేను ఆశిస్తున్నాను ... త్వరలో నేను ప్రత్యేకంగా అంకితం చేసిన వ్యాసంలో సాధారణ వ్యక్తీకరణలను వివరిస్తాను ...
5 వ్యాఖ్యలు, మీదే వదిలేయండి
శుభ మధ్యాహ్నం
కొన్ని వ్యాఖ్యలు ...
మీరు 'egrep' ఆదేశాన్ని వివరిస్తారు కాని 'egrep' మరియు 'grep' ల మధ్య వ్యత్యాసాన్ని ఉంచవద్దు, అది ఇక్కడే ఉండాలి.
ఉదాహరణకు:
Grep తో: ip -4 a | grep '[0-9] \ +'
ఉదా: ip -4 a | egrep '[0-9] +'
ఆహ్, మరియు ఇది తప్పు, 'ఉదా. "హలో. * బై" example.txt'; ఫైల్లో 'హలో' స్ట్రింగ్ ఉన్న ఏదైనా లైన్ తరువాత 'వీడ్కోలు' ఉన్నపుడు ఇక్కడ విజయం సంభవిస్తుంది, ఈ లైన్ నిజంగా ఏమైనా ప్రారంభమవుతుంది మరియు ముగుస్తుంది.
వ్యాసం ఇలా చెబుతుంది:
egrep '^ హలో. * బై $' example.txt
మరియు అన్ని ఎంపికలు, లేదా దాదాపు అన్ని (నేను దాన్ని తనిఖీ చేయడాన్ని ఆపను), 'grep' యొక్క ఎంపికలు 'egrep' ప్రత్యేకంగా కాదు.
ఉత్తమ సంబంధాలు.
ఆ లోపాన్ని నివేదించినందుకు ధన్యవాదాలు. సాధారణ వ్యక్తీకరణలపై మీరు ఏమి వ్యాఖ్యానిస్తారో, నేను ఇప్పటికే రెండవ పేరాలో ఉంచాను. నేను వారికి ఒక నిర్దిష్ట కథనాన్ని అంకితం చేస్తాను, ఎందుకంటే చాలా ఉన్నాయి మరియు ఈ వ్యాసం చాలా సమయం పడుతుంది. ఒక పలకరింపు!
హలో మళ్ళీ, ఐజాక్.
రెండవ పేరాలో మీరు 'ఎగ్రెప్' అనేది 'గ్రెప్-ఇ' యొక్క మారుపేరు అని చెప్పాలి, లేదా చెప్పాలి, కానీ మీరు ఉపయోగించినప్పుడు కంటే భిన్నంగా వ్రాయబడిన కొన్ని రెగ్యులర్ ఎక్స్ప్రెషన్తో 'ఎగ్రెప్' ను ఉపయోగించిన ఉదాహరణను మీరు ఇవ్వరు. grep '.
విస్తరించిన రెగ్యులర్ ఎక్స్ప్రెషన్స్ను వివరించడానికి ఒక వ్యాసాన్ని అంకితం చేయడం నాకు ధైర్యంగా అనిపిస్తుంది, ఎందుకంటే ఇతర విషయాలతోపాటు, ఇలాంటి సైట్లు ప్రకటనలు ఇవ్వవు మరియు గ్నూ కమ్యూనిటీ కోసం చాలా ముఖ్యమైన సమాచార పనిని చేస్తున్నాయి: https://www.rexegg.com/
నేను ట్రోలింగ్ కోసం ఇక్కడ వ్రాయడం లేదు, వీటన్నిటితో నా ఉద్దేశ్యం ఏమిటంటే, 'ఎగ్రెప్' లేదా 'గ్రెప్' ఏమి చేస్తుందో చూడటానికి ఎవరైనా ఈ ఎంట్రీని చదివితే, దయచేసి ఇతర వనరులను చూడండి, ఈ ఎంట్రీ దేనికీ సూచనగా ఉండకూడదు, ఇది కొద్దిగా, చెడుగా వివరిస్తుంది , నిరుపయోగమైన సమాచారాన్ని అందిస్తుంది మరియు గందరగోళంగా ఉంటుంది, ముఖ్యంగా GNU గురించి అవగాహన లేనివారికి మరియు అది అందించే శక్తివంతమైన సాధనాలు.
చివరగా, నా మొదటి వ్యాఖ్య (^ $) తర్వాత నేను సూచించిన బగ్ను మీరు జోడించి పరిష్కరించారు. ఇతర సైట్లలో మాదిరిగా, మీరు దిద్దుబాటు చేసిన వ్యక్తిని ఉదహరించాలి, లేదా కనీసం ఇది దిద్దుబాటు అని చెప్పాలి, అది గ్నూ బేస్ యొక్క భాగం, ఈ బ్లాగ్ ప్రారంభమైన మరియు ఉన్న అదే స్థావరం కోల్పోయిన.
ఒక గ్రీటింగ్.
మీ దృష్టికోణానికి ధన్యవాదాలు.
ffff