லினக்ஸில் grep கட்டளையை எவ்வாறு பயன்படுத்துவது
லினக்ஸ் grep
கட்டளை என்பது ஒரு சரம் மற்றும் முறை பொருந்தக்கூடிய பயன்பாடாகும், இது பல கோப்புகளிலிருந்து பொருந்தும் வரிகளைக் காண்பிக்கும். இது மற்ற கட்டளைகளிலிருந்து குழாய் பதிக்கப்பட்ட வெளியீட்டிலும் செயல்படுகிறது. எப்படி என்பதை நாங்கள் உங்களுக்குக் காட்டுகிறோம்.
Grep க்குப் பின்னால் உள்ள கதை
தி grep
கட்டளை லினக்ஸ் மற்றும் யூனிக்ஸ் வட்டங்களில் மூன்று காரணங்களுக்காக பிரபலமானது. முதலாவதாக, இது மிகவும் பயனுள்ளதாக இருக்கும். இரண்டாவதாக, விருப்பங்களின் செல்வம் மிகப்பெரியதாக இருக்கும். மூன்றாவதாக, ஒரு குறிப்பிட்ட தேவையை பூர்த்தி செய்வதற்காக ஒரே இரவில் எழுதப்பட்டது. முதல் இரண்டு களமிறங்குகின்றன; மூன்றாவது சற்று முடக்கப்பட்டுள்ளது.
கென் தாம்சன் வழக்கமான வெளிப்பாடு தேடல் திறன்களை பிரித்தெடுத்தார் எட்
ஆசிரியர் (ee-dee என உச்சரிக்கப்படுகிறது) மற்றும் உரை கோப்புகள் மூலம் தேட ஒரு சிறிய நிரலை his தனது சொந்த பயன்பாட்டிற்காக உருவாக்கினார். பெல் லேப்ஸில் அவரது துறைத் தலைவர் டக் மில்சிராய் தாம்சனை அணுகி தனது சக ஊழியர்களில் ஒருவரான லீ மக்மஹோன் எதிர்கொள்ளும் பிரச்சினையை விவரித்தார்.
மக்மஹோன் கூட்டாட்சி ஆவணங்களின் ஆசிரியர்களை உரை பகுப்பாய்வு மூலம் அடையாளம் காண முயன்றார். உரை கோப்புகளுக்குள் சொற்றொடர்களையும் சரங்களையும் தேடக்கூடிய ஒரு கருவி அவருக்கு தேவைப்பட்டது. தாம்சன் அன்று மாலை சுமார் ஒரு மணிநேரம் தனது கருவியை மற்றவர்களால் பயன்படுத்தக்கூடிய ஒரு பொதுவான பயன்பாடாக மாற்றி அதை மறுபெயரிட்டார் grep
. அவர் பெயரை எடுத்தார் எட்
கட்டளை சரம் g / re / p
, இது "உலகளாவிய வழக்கமான வெளிப்பாடு தேடல்" என்று மொழிபெயர்க்கப்பட்டுள்ளது.
தாம்சன் பிரையன் கெர்னிகனுடன் பிறந்ததைப் பற்றி பேசுவதை நீங்கள் பார்க்கலாம் grep
.
Grep உடன் எளிய தேடல்கள்
ஒரு கோப்பில் ஒரு சரத்தைத் தேட, கட்டளை வரியில் தேடல் காலத்தையும் கோப்பு பெயரையும் அனுப்பவும்:
பொருந்தும் கோடுகள் காட்டப்படும். இந்த வழக்கில், இது ஒரு ஒற்றை வரி. பொருந்தும் உரை சிறப்பிக்கப்படுகிறது. ஏனென்றால் பெரும்பாலான விநியோகங்களில் grep
இதற்கு மாற்றுப்பெயர்:
alias grep = "grep --colour = auto"
பொருந்தக்கூடிய பல கோடுகள் இருக்கும் முடிவுகளைப் பார்ப்போம். பயன்பாட்டு பதிவு கோப்பில் “சராசரி” என்ற வார்த்தையைத் தேடுவோம். பதிவு கோப்பில் சொல் சிறிய எழுத்தில் இருந்தால் நினைவுகூர முடியாது என்பதால், நாங்கள் அதைப் பயன்படுத்துவோம் -நான்
(வழக்கை புறக்கணிக்கவும்) விருப்பம்:
grep -i சராசரி கீக் -1.லாக்
பொருந்தும் உரை ஒவ்வொன்றிலும் சிறப்பிக்கப்பட்டுள்ள ஒவ்வொரு பொருந்தும் வரியும் காட்டப்படும்.
-V (தலைகீழ் பொருத்தம்) விருப்பத்தைப் பயன்படுத்தி பொருந்தாத வரிகளை நாம் காண்பிக்க முடியும்.
grep -v Mem geek-1.log
பொருந்தாத கோடுகள் என்பதால் சிறப்பம்சமாக எதுவும் இல்லை.
நாம் ஏற்படுத்தலாம் grep
முற்றிலும் அமைதியாக இருக்க வேண்டும். இதன் விளைவாக ஷெல்லுக்கு திரும்பும் மதிப்பாக அனுப்பப்படுகிறது grep
. பூஜ்ஜியத்தின் விளைவாக சரம் என்று பொருள் இருந்தது கிடைத்தது, ஒன்றின் விளைவாக அது பொருள் இல்லை கண்டறியப்பட்டது. ஐப் பயன்படுத்தி திரும்பும் குறியீட்டை நாம் சரிபார்க்கலாம் $?
சிறப்பு அளவுருக்கள்:
grep -q சராசரி கீக் -1.லாக்
எதிரொலி $?
grep -q howtogeek geek-1.log
எதிரொலி $?
Grep உடன் சுழல்நிலை தேடல்கள்
உள்ளமை கோப்பகங்கள் மற்றும் துணை அடைவுகள் மூலம் தேட, -r (சுழல்நிலை) விருப்பத்தைப் பயன்படுத்தவும். கட்டளை வரியில் நீங்கள் ஒரு கோப்பு பெயரை வழங்கவில்லை என்பதை நினைவில் கொள்க, நீங்கள் ஒரு பாதையை வழங்க வேண்டும். இங்கே நாம் தற்போதைய கோப்பகத்தில் தேடுகிறோம் “.” மற்றும் எந்த துணை அடைவுகளும்:
grep -r -i memfree.
பொருந்தும் ஒவ்வொரு வரியின் கோப்பகமும் கோப்பு பெயரும் வெளியீட்டில் அடங்கும்.
நாம் செய்யலாம்grep
பயன்படுத்தி குறியீட்டு இணைப்புகளைப் பின்பற்றவும் -ஆர்
(சுழல்நிலை விலகல்) விருப்பம். இந்த கோப்பகத்தில் ஒரு குறியீட்டு இணைப்பு கிடைத்துள்ளது பதிவுகள்-கோப்புறை
. இது சுட்டிக்காட்டுகிறது / home / dave / பதிவுகள்
.
ls -l பதிவுகள்-கோப்புறை
உடன் எங்கள் கடைசி தேடலை மீண்டும் செய்வோம்-ஆர்
(சுழல்நிலை விலகல்) விருப்பம்:
grep -R -i memfree.
குறியீட்டு இணைப்பு பின்பற்றப்பட்டு, அது சுட்டிக்காட்டும் கோப்பகம் தேடப்படுகிறது grep
கூட.
முழு சொற்களைத் தேடுகிறது
இயல்பாக, grep
தேடல் இலக்கு அந்த வரியில் எங்கும் தோன்றினால், மற்றொரு சரம் உள்ளே இருந்தால் அது ஒரு வரியுடன் பொருந்தும். இந்த உதாரணத்தைப் பாருங்கள். “இலவசம்” என்ற வார்த்தையை நாங்கள் தேடப் போகிறோம்.
grep -i free geek-1.log
முடிவுகள் “இலவசம்” என்ற சரம் கொண்ட கோடுகள், ஆனால் அவை தனி சொற்கள் அல்ல. அவை “மெம்ஃப்ரீ” என்ற சரத்தின் ஒரு பகுதியாகும்.
கட்டாயப்படுத்த grep
தனி “சொற்களை” மட்டும் பொருத்த, பயன்படுத்தவும் -w
(சொல் regexp) விருப்பம்.
grep -w -i இலவச கீக் -1.லாக்
எதிரொலி $?
இந்த நேரத்தில் எந்த முடிவுகளும் இல்லை, ஏனெனில் “இலவசம்” என்ற தேடல் சொல் கோப்பில் தனி வார்த்தையாக தோன்றாது.
பல தேடல் விதிமுறைகளைப் பயன்படுத்துதல்
தி -இ
(நீட்டிக்கப்பட்ட regexp) விருப்பம் பல சொற்களைத் தேட உங்களை அனுமதிக்கிறது. (தி -இ
விருப்பம் நீக்கப்பட்டதை மாற்றுகிறது எ.கா.
பதிப்பு grep
.)
இந்த கட்டளை “சராசரி” மற்றும் “மெம்ஃப்ரீ” என்ற இரண்டு தேடல் சொற்களைத் தேடுகிறது.
grep -E -w -i "சராசரி | மெம்ஃப்ரீ" கீக் -1.லாக்
ஒவ்வொரு தேடல் சொற்களுக்கும் பொருந்தும் கோடுகள் அனைத்தும் காட்டப்படும்.
முழு சொற்களும் இல்லாத பல சொற்களை நீங்கள் தேடலாம், ஆனால் அவை முழு சொற்களாகவும் இருக்கலாம்.
தி -e
(வடிவங்கள்) விருப்பம் கட்டளை வரியில் பல தேடல் சொற்களைப் பயன்படுத்த உங்களை அனுமதிக்கிறது. தேடல் வடிவத்தை உருவாக்க வழக்கமான வெளிப்பாடு அடைப்புக்குறி அம்சத்தைப் பயன்படுத்துகிறோம். அது சொல்கிறது grep
"[]" அடைப்புக்குறிக்குள் உள்ள எழுத்துக்களில் ஏதேனும் ஒன்றை பொருத்த. இதன் பொருள் grep
அது தேடும்போது “kB” அல்லது “KB” உடன் பொருந்தும்.
இரண்டு சரங்களும் பொருந்தின, உண்மையில், சில வரிகளில் இரண்டு சரங்களும் உள்ளன.
பொருந்தும் கோடுகள் சரியாக
தி-எக்ஸ்
(line regexp) வரிகளுடன் மட்டுமே பொருந்தும் முழு வரி தேடல் காலத்துடன் பொருந்துகிறது. பதிவு கோப்பில் ஒரு முறை மட்டுமே தோன்றும் என்று எங்களுக்குத் தெரிந்த தேதி மற்றும் நேர முத்திரையைத் தேடுவோம்:
grep -x "20-ஜன - 06 15:24:35" கீக் -1.லாக்
பொருந்தக்கூடிய ஒற்றை வரி காணப்படுகிறது மற்றும் காட்டப்படும்.
அதற்கு நேர்மாறானது அந்த வரிகளை மட்டுமே காட்டுகிறது வேண்டாம் பொருத்துக. நீங்கள் உள்ளமைவு கோப்புகளைப் பார்க்கும்போது இது பயனுள்ளதாக இருக்கும். கருத்துகள் மிகச் சிறந்தவை, ஆனால் சில சமயங்களில் அவை அனைத்திலும் உண்மையான அமைப்புகளைக் கண்டறிவது கடினம். இங்கே / 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 "^" கீக் -1.லாக்
முதல் எழுமாக-வரியின் தொடக்கத்தில் a இடத்தைக் கொண்ட கோடுகள் காட்டப்படும்.
வரியின் முடிவைப் பொருத்த, “$” வழக்கமான வெளிப்பாடு ஆபரேட்டரைப் பயன்படுத்தவும். “00” உடன் முடிவடையும் வரிகளை நாங்கள் தேடப் போகிறோம்.
grep "00 $" கீக் -1.லாக்
காட்சி “00” ஐ அவற்றின் இறுதி எழுத்துக்களாகக் காட்டுகிறது.
Grep உடன் பைப்புகளைப் பயன்படுத்துதல்
நிச்சயமாக, நீங்கள் உள்ளீட்டை குழாய் செய்யலாம் grep
, வெளியீட்டை குழாய் grep
மற்றொரு நிரலில், மற்றும் வேண்டும் grep
ஒரு குழாய் சங்கிலியின் நடுவில் அமைந்துள்ளது.
எங்கள் சி மூலக் குறியீடு கோப்புகளில் “ExtractParameters” சரத்தின் அனைத்து நிகழ்வுகளையும் காண விரும்புகிறோம் என்று சொல்லலாம். இன்னும் சில இருக்கப்போகிறது என்பது எங்களுக்குத் தெரியும், எனவே வெளியீட்டை குழாய் பதிக்கிறோம் குறைவாக
:
grep "ExtractParameters" * .c | குறைவாக
வெளியீடு வழங்கப்படுகிறது குறைவாக
.
இது கோப்பு பட்டியல் வழியாகப் பயன்படுத்தவும் பயன்படுத்தவும் உங்களை அனுமதிக்கிறது குறைவானது
தேடல் வசதி.
நாம் வெளியீட்டை குழாய் செய்தால் grep
க்குள் wc
மற்றும் பயன்படுத்த -l
(கோடுகள்) விருப்பம், “ExtractParameters” ஐக் கொண்ட மூல குறியீடு கோப்புகளில் உள்ள வரிகளின் எண்ணிக்கையை எண்ணலாம். (இதைப் பயன்படுத்தி நாம் இதை அடைய முடியும் grep
-சி
(எண்ணிக்கை) விருப்பம், ஆனால் குழாய் வெளியேறுவதை நிரூபிக்க இது ஒரு சுத்தமான வழியாகும் grep
.)
grep "ExtractParameters" * .c | wc -l
அடுத்த கட்டளையுடன், வெளியீட்டை வெளியேற்றுகிறோம் ls
க்குள் grep
மற்றும் வெளியீட்டை குழாய் பதித்தல் grep
க்குள் வகைபடுத்து
. தற்போதைய கோப்பகத்தில் கோப்புகளை பட்டியலிடுகிறோம், அவற்றில் “ஆகஸ்ட்” சரம் உள்ளவர்களைத் தேர்ந்தெடுத்து கோப்பு அளவு மூலம் வரிசைப்படுத்துகிறோம்:
ls -l | grep "ஆகஸ்ட்" | வரிசை + 4n
அதை உடைப்போம்:
- ls -l: பயன்படுத்தி கோப்புகளின் நீண்ட வடிவமைப்பு பட்டியலை செய்யவும்
ls
. - grep “Aug”: இலிருந்து வரிகளைத் தேர்ந்தெடுக்கவும்
ls
அவற்றில் “ஆகஸ்ட்” இருக்கும் பட்டியல். இது அவர்களின் பெயர்களில் “ஆகஸ்ட்” கொண்ட கோப்புகளையும் கண்டுபிடிக்கும் என்பதை நினைவில் கொள்க. - வரிசை + 4n: நான்காவது நெடுவரிசையில் grep இலிருந்து வெளியீட்டை வரிசைப்படுத்தவும் (கோப்பு அளவு).
கோப்பு அளவின் ஏறுவரிசையில், ஆகஸ்டில் (ஆண்டைப் பொருட்படுத்தாமல்) மாற்றியமைக்கப்பட்ட அனைத்து கோப்புகளின் வரிசைப்படுத்தப்பட்ட பட்டியலைப் பெறுகிறோம்.
தொடர்புடையது:லினக்ஸில் பைப்புகளை எவ்வாறு பயன்படுத்துவது
grep: குறைவான கட்டளை, ஒரு நட்பு நாடு
grep
உங்கள் வசம் இருக்கும் ஒரு பயங்கர கருவி. இது 1974 ஆம் ஆண்டிலிருந்து தொடங்குகிறது, அது இன்னும் வலுவாக உள்ளது, ஏனெனில் அது என்ன செய்கிறது என்பது எங்களுக்குத் தேவை, மேலும் எதுவும் சிறப்பாக இல்லை.
இணைத்தல் grep
சில வழக்கமான வெளிப்பாடுகளுடன்-ஃபூ உண்மையில் அதை அடுத்த கட்டத்திற்கு கொண்டு செல்கிறது.
தொடர்புடையது:சிறப்பாக தேட மற்றும் நேரத்தை மிச்சப்படுத்த அடிப்படை வழக்கமான வெளிப்பாடுகளை எவ்வாறு பயன்படுத்துவது