GREP மற்றும் வழக்கமான வெளிப்பாடுகள் பற்றிய கல்வித் திட்டம். லினக்ஸில் வழக்கமான வெளிப்பாடுகளை (regex) பயன்படுத்துதல் வழக்கமான வெளிப்பாடு அட்டவணை grep

grep பயன்பாடு மிகவும் சக்திவாய்ந்த தேடல் மற்றும் வடிகட்டி கருவியாகும். உரை தகவல். இந்த கட்டுரை அதன் பயன்பாட்டின் பல எடுத்துக்காட்டுகளைக் காட்டுகிறது, இது அதன் திறன்களைப் பாராட்ட உங்களை அனுமதிக்கும்.
கோப்புகள் மற்றும் வெளியீட்டு ஸ்ட்ரீம்களில் வார்த்தைகள் அல்லது சொற்றொடர்களைத் தேடுவதே grep இன் முக்கிய பயன்பாடாகும். கட்டளை வரியில் வினவல் மற்றும் தேடல் பகுதியை (கோப்பு) தட்டச்சு செய்வதன் மூலம் நீங்கள் தேடலாம்.
எடுத்துக்காட்டாக, hystack.txt கோப்பில் "ஊசி" என்ற சரத்தைக் கண்டறிய, பின்வரும் கட்டளையைப் பயன்படுத்தவும்:

$ grep ஊசி haystack.txt

இதன் விளைவாக, haystack.txt கோப்பின் உள்ளடக்கங்களில் அது எதிர்கொள்ளும் ஊசியின் அனைத்து நிகழ்வுகளையும் grep காண்பிக்கும். இந்த விஷயத்தில், grep எழுத்துகளின் தொகுப்பைத் தேடுகிறது, ஒரு வார்த்தை அல்ல என்பதை கவனத்தில் கொள்ள வேண்டும். எடுத்துக்காட்டாக, "தேவையில்லாத" வார்த்தை மற்றும் "ஊசி" என்ற வரிசையைக் கொண்ட பிற சொற்கள் அடங்கிய சரங்கள் காட்டப்படும்.


நீங்கள் ஒரு குறிப்பிட்ட வார்த்தையைத் தேடுகிறீர்கள் என்று grep சொல்ல, -w சுவிட்சைப் பயன்படுத்தவும். இந்த விசை குறிப்பிட்ட வார்த்தைக்கு மட்டுமே தேடலை கட்டுப்படுத்தும். ஒரு சொல் என்பது இருபுறமும் ஏதேனும் இடைவெளி, நிறுத்தற்குறி அல்லது வரி முறிவுகளால் பிரிக்கப்பட்ட வினவல் ஆகும்.

$ grep -w ஊசி haystack.txt

தேடலை ஒரு கோப்பிற்கு மட்டுப்படுத்த வேண்டிய அவசியமில்லை; grep கோப்புகளின் குழுவில் தேடலாம், மேலும் தேடல் முடிவுகள் பொருந்திய கோப்பைக் குறிக்கும். -n சுவிட்ச் பொருத்தம் காணப்பட்ட வரி எண்ணையும் சேர்க்கும், மேலும் -r சுவிட்ச் உங்களை சுழல்நிலை தேடலைச் செய்ய அனுமதிக்கும். நிரல் மூலக் குறியீடுகளுடன் கோப்புகளில் தேடும்போது இது மிகவும் வசதியானது.

$ grep -rnw function_name /home/www/dev/myprogram/

ஒவ்வொரு போட்டிக்கும் முன் கோப்பின் பெயர் பட்டியலிடப்படும். நீங்கள் கோப்பு பெயர்களை மறைக்க வேண்டும் என்றால், -h சுவிட்சைப் பயன்படுத்தவும், மாறாக, உங்களுக்கு கோப்பு பெயர்கள் மட்டுமே தேவைப்பட்டால், -l சுவிட்சைக் குறிப்பிடவும்
பின்வரும் எடுத்துக்காட்டில், ஐஆர்சி பதிவு கோப்பில் URLகளைத் தேடி கடைசி 10 பொருத்தங்களைக் காண்பிப்போம்.

$ grep -wo http://.* channel.log | வால்

-o விருப்பம் grep முழு வரியை விட முறை பொருத்தத்தை மட்டுமே அச்சிட சொல்கிறது. பைப்பைப் பயன்படுத்தி, grep இன் வெளியீட்டை டெயில் கட்டளைக்கு திருப்பி விடுகிறோம், இது முன்னிருப்பாக கடைசி 10 வரிகளை வெளியிடுகிறது.
இப்போது குறிப்பிட்ட பயனர்கள் ஐஆர்சி சேனலுக்கு அனுப்பிய செய்திகளின் எண்ணிக்கையை எண்ணுவோம். உதாரணமாக, நான் வீட்டில் இருந்தும் வேலையிலிருந்தும் அனுப்பிய அனைத்து செய்திகளும். அவை புனைப்பெயரில் வேறுபடுகின்றன, வீட்டில் நான் user_at_home என்ற புனைப்பெயரைப் பயன்படுத்துகிறேன், வேலை செய்யும் இடத்தில் user_at_work.

$ grep -c "^user_at_(வீடு|வேலை)" channel.log

-c விருப்பத்துடன், grep பொருத்தங்களின் எண்ணிக்கையை மட்டுமே அச்சிடுகிறது, பொருத்தங்கள் இல்லை. தேடல் சரம் மேற்கோள்களில் இணைக்கப்பட்டுள்ளது, ஏனெனில் இது ஷெல் மூலம் கட்டுப்பாட்டு எழுத்துகளாக அங்கீகரிக்கக்கூடிய சிறப்பு எழுத்துக்களைக் கொண்டுள்ளது. மேற்கோள் குறிகள் தேடல் வடிவத்தில் சேர்க்கப்படவில்லை என்பதை நினைவில் கொள்ளவும். சிறப்பு எழுத்துக்களில் இருந்து தப்பிக்க "" பின்சாய்வு பயன்படுத்தப்படுகிறது.
சேனலில் "கத்த" விரும்பும் நபர்களிடமிருந்து செய்திகளைத் தேடுவோம். "ஸ்க்ரீம்" என்பதன் மூலம், அனைத்து பெரிய எழுத்துக்களிலும் பொன்னிற பாணியில் எழுதப்பட்ட செய்திகளைக் குறிக்கிறோம். தேடலில் இருந்து சுருக்கங்களின் சீரற்ற வெற்றிகளைத் தவிர்க்க, நாங்கள் ஐந்து அல்லது அதற்கு மேற்பட்ட எழுத்துக்களின் சொற்களைத் தேடுவோம்:

$ grep -w "+(5,)" channel.log

மேலும் விரிவான விளக்கத்திற்கு, நீங்கள் grep man பக்கத்தைப் பார்க்கவும்.
இன்னும் சில உதாரணங்கள்:

# grep root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin

சரம் ரூட்டைக் கொண்டிருக்கும் /etc/passwd கோப்பிலிருந்து வரிகளைக் காட்டுகிறது.

# grep -n ரூட் /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 12:operator:x:11:0:operator:/root:/sbin/nologin

கூடுதலாக, தேடப்பட்ட வரியைக் கொண்டிருக்கும் வரி எண்கள் காட்டப்படும்.

# grep -v bash /etc/passwd | grep -v nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin :/sbin/halt news:x:9:13:news:/var/spool/news: mailnull:x:47:47::/var/spool/mqueue:/dev/null xfs:x:43:43: X எழுத்துரு சேவையகம்:/etc/X11/fs:/bin/false rpc:x:32:32:Portmapper RPC பயனர்:/:/bin/false nscd:x:28:28:NSCD Daemon:/:/bin/false பெயரிடப்பட்டது:x:25:25:Named:/var/named:/bin/false squid:x:23:23::/var/spool/squid:/dev/null ldap:x:55:55:LDAP பயனர்: /var/lib/ldap:/bin/false apache:x:48:48:Apache:/var/www:/bin/false

எந்தெந்தப் பயனர்கள் பாஷைப் பயன்படுத்தவில்லை என்பதைச் சரிபார்க்கிறது, அவற்றின் ஷெல்லாகக் குறிப்பிடப்பட்ட nologin உள்ள பயனர் கணக்குகளைத் தவிர்த்து.

# grep -c false /etc/passwd 7

/bin/false ஆக இருக்கும் கணக்குகளின் எண்ணிக்கையைக் கணக்கிடுகிறது.

# grep -i கேம்கள் ~/.bash* | grep -v வரலாறு

இந்த கட்டளை முகப்பு கோப்பகத்தில் உள்ள அனைத்து கோப்புகளிலிருந்தும் வரிகளைக் காட்டுகிறது தற்போதைய பயனாளி, ~/.bash உடன் தொடங்கும் பெயர்கள், ~/.bash_history கோப்பில் காணப்படும் பொருத்தங்களைத் தவிர்ப்பதற்காக, சர வரலாற்றைக் கொண்ட கோப்புகளைத் தவிர, மேல் அல்லது சிறிய எழுத்துக்களில் ஒரே வரியைக் கொண்டிருக்கலாம். "விளையாட்டுகள்" என்ற வார்த்தைக்கான தேடல் மேற்கொள்ளப்படுகிறது என்பதை நினைவில் கொள்ளவும்; அதற்கு பதிலாக வேறு எந்த வார்த்தையையும் நீங்கள் மாற்றலாம்.
grep கட்டளை மற்றும் வழக்கமான வெளிப்பாடுகள்

முந்தைய உதாரணத்தைப் போலன்றி, "ரூட்" என்ற வரியுடன் தொடங்கும் வரிகளை மட்டுமே இப்போது காண்பிப்போம்:

# grep ^root /etc/passwd root:x:0:0:root:/root:/bin/bash

எந்தக் கணக்குகள் ஷெல்லைப் பயன்படுத்தவில்லை என்பதைப் பார்க்க விரும்பினால், ":" எழுத்துடன் முடிவடையும் வரிகளைத் தேடுகிறோம்:

# grep:$ /etc/passwd news:x:9:13:news:/var/spool/news:

உங்கள் ~/.bashrc கோப்பில் உள்ள PATH மாறி ஏற்றுமதி செய்யப்பட்டுள்ளதா என்பதைச் சரிபார்க்க, முதலில் "ஏற்றுமதி" உள்ள வரிகளைத் தேர்ந்தெடுத்து, பின்னர் "PATH" என்ற வரியுடன் தொடங்கும் வரிகளைத் தேடவும்; இந்த வழக்கில், MANPATH மற்றும் பிற காட்டப்படாது சாத்தியமான வழிகள்:

# grep ஏற்றுமதி ~/.bashrc | grep "PATH" ஏற்றுமதி PATH="/bin:/usr/lib/mh:/lib:/usr/bin:/usr/local/bin:/usr/ucb:/usr/dbin:$PATH"

எழுத்து வகுப்புகள்

சதுர அடைப்புக்குறிக்குள் உள்ள வெளிப்பாடு என்பது [" மற்றும் "]"" எழுத்துகளுக்குள் இணைக்கப்பட்ட எழுத்துகளின் பட்டியலாகும். இந்தப் பட்டியலில் குறிப்பிடப்பட்டுள்ள எந்த ஒரு எழுத்துக்கும் இது பொருந்தும்; பட்டியலின் முதல் எழுத்து "^" என்றால், அது பட்டியலில் இல்லாத எந்த எழுத்துக்கும் பொருந்தும். எடுத்துக்காட்டாக, வழக்கமான வெளிப்பாடு "" எந்த ஒற்றை இலக்கத்திற்கும் பொருந்தும்.

சதுர அடைப்புக்குறிக்குள் உள்ள வெளிப்பாட்டிற்குள், ஹைபனால் பிரிக்கப்பட்ட இரண்டு எழுத்துக்களைக் கொண்ட வரம்பை நீங்கள் குறிப்பிடலாம். வரிசையாக்க விதிகளின்படி, இந்த இரண்டு எழுத்துக்கள் உட்பட, இந்த இரண்டு எழுத்துக்களின் உள்ளே வரும் எந்த ஒரு தனிப்பாடலிலும் வெளிப்பாடு பொருந்துகிறது; இது லோகேலில் குறிப்பிடப்பட்ட தொகுப்பு மற்றும் எழுத்துத் தொகுப்பைக் கணக்கில் எடுத்துக்கொள்கிறது. எடுத்துக்காட்டாக, இயல்புநிலை மொழி C ஆக இருக்கும் போது, ​​"" வெளிப்பாடு "" க்கு சமமாக இருக்கும். அகராதி வரிசையில் வரிசைப்படுத்தப்படும் பல மொழிகள் உள்ளன, மேலும் இந்த இடங்களில் "" என்பது பொதுவாக "" க்கு சமமாக இருக்காது, எடுத்துக்காட்டாக, இது "" வெளிப்பாட்டிற்கு சமமாக இருக்கலாம். அடைப்புக்குறியிடப்பட்ட வெளிப்பாட்டின் பாரம்பரிய விளக்கத்தைப் பயன்படுத்த, LC_ALL சூழல் மாறியை "C" என அமைப்பதன் மூலம் நீங்கள் C லோகேலைப் பயன்படுத்தலாம்.

இறுதியாக, சிறப்புப் பெயரிடப்பட்ட எழுத்து வகுப்புகள் உள்ளன, அவை சதுர அடைப்புக்குறிக்குள் வெளிப்பாடுகளுக்குள் குறிப்பிடப்படுகின்றன. கூடுதல் தகவல்இந்த முன் வரையறுக்கப்பட்ட வெளிப்பாடுகள் பற்றிய தகவலுக்கு, man பக்கங்கள் அல்லது grep கட்டளை ஆவணங்களைப் பார்க்கவும்.

# grep /etc/group sys:x:3:root,bin,adm tty:x:5: mail:x:12:mail, postfix ftp:x:50: nobody:x:99: floppy:x:19: xfs:x:43: nfsnobody:x:65534: postfix:x:89:

உதாரணம் "y" அல்லது "f" எழுத்துகளைக் கொண்ட அனைத்து வரிகளையும் காட்டுகிறது.
யுனிவர்சல் எழுத்துக்கள் (மெட்டா கேரக்டர்கள்)

"" பயன்படுத்தவும் எந்த ஒரு பாத்திரத்தையும் பொருத்த வேண்டும். அகராதியில் இருந்து எடுக்கப்பட்ட அனைத்து ஆங்கில வார்த்தைகளின் பட்டியலையும் நீங்கள் விரும்பினால், "c" இல் தொடங்கி "h" உடன் முடிவடையும் ஐந்து எழுத்துக்கள் (குறுக்கெழுத்து புதிர்களைத் தீர்க்க பயனுள்ளதாக இருக்கும்):

# கிரேப் " " /usr/share/dict/words catch clash cloth coach couch cough crash crash

நீங்கள் ஒரு கால எழுத்தைக் கொண்ட வரிகளை ஒரு எழுத்தாகக் காட்ட விரும்பினால், grep கட்டளையில் -F விருப்பத்தைக் குறிப்பிடவும். சின்னங்கள்"< " и «>" என்பது ஒரு வெற்று வரியின் முன் மற்றும் அதன்படி, குறிப்பிட்ட எழுத்துக்களுக்குப் பிறகு இருப்பதைக் குறிக்கிறது. அதாவது வார்த்தைகள் கோப்பில் உள்ள வார்த்தைகள் அதற்கேற்ப எழுதப்பட வேண்டும். வெற்று வரிகளை கணக்கில் எடுத்துக் கொள்ளாமல் குறிப்பிட்ட வடிவங்களின்படி உரையில் உள்ள அனைத்து சொற்களையும் நீங்கள் கண்டுபிடிக்க விரும்பினால், குறியீடுகளைத் தவிர்க்கவும் "< " и «>", மிகவும் துல்லியமான வார்த்தைகளைத் தேட, -w சுவிட்சைப் பயன்படுத்தவும்.

இதேபோல் "c" மற்றும் "h" க்கு இடையில் எத்தனை எழுத்துக்கள் இருக்கக்கூடிய வார்த்தைகளைக் கண்டறிய, ஒரு நட்சத்திரத்தை (*) பயன்படுத்தவும். கீழே உள்ள எடுத்துக்காட்டு, கணினி அகராதியில் இருந்து "c" இல் தொடங்கி "h" உடன் முடிவடையும் அனைத்து சொற்களையும் தேர்ந்தெடுக்கிறது:

# கிரேப் " " /usr/share/dict/words caliph cash catch cheesecloth cheetah --அவுட்புட் தவிர்க்கப்பட்டது--

ஒரு கோப்பு அல்லது வெளியீட்டு ஸ்ட்ரீமில் ஒரு நட்சத்திர நட்சத்திரத்தை நீங்கள் கண்டுபிடிக்க விரும்பினால், பயன்படுத்தவும் ஒற்றை மேற்கோள்கள். கீழே உள்ள எடுத்துக்காட்டில் உள்ள பயனர் முதலில் மேற்கோள்களைப் பயன்படுத்தாமல் /etc/profile கோப்பில் "நட்சத்திரத்தை" தேட முயற்சிக்கிறார், இதன் விளைவாக எதுவும் கண்டறியப்படவில்லை. மேற்கோள்களைப் பயன்படுத்தும்போது, ​​விளைவு வெளியீடு:

# grep * /etc/profile # grep "*" /etc/profile for i /etc/profile.d/*.sh ; செய்

sed மற்றும் awk ஐப் பயன்படுத்தி பாஷ் ஸ்கிரிப்ட்களில் உரைகளை முழுமையாக செயலாக்க, நீங்கள் வழக்கமான வெளிப்பாடுகளைப் புரிந்து கொள்ள வேண்டும். இந்த மிகவும் பயனுள்ள கருவியின் செயலாக்கங்கள் எல்லா இடங்களிலும் உண்மையில் காணப்படுகின்றன, மேலும் அனைத்து வழக்கமான வெளிப்பாடுகளும் ஒரே மாதிரியாக கட்டமைக்கப்பட்டிருந்தாலும், அதே யோசனைகளை அடிப்படையாகக் கொண்டாலும், வெவ்வேறு சூழல்களில் அவற்றுடன் பணிபுரிவது சில அம்சங்களைக் கொண்டுள்ளது. ஸ்கிரிப்ட்களில் பயன்படுத்த ஏற்ற வழக்கமான வெளிப்பாடுகளைப் பற்றி இங்கே பேசுவோம் கட்டளை வரிலினக்ஸ்.

இந்த பொருள் வழக்கமான வெளிப்பாடுகளுக்கு ஒரு அறிமுகமாக வடிவமைக்கப்பட்டுள்ளது, அவை என்னவென்று முழுமையாக அறியாதவர்களுக்காக வடிவமைக்கப்பட்டுள்ளது. எனவே ஆரம்பத்திலிருந்தே தொடங்குவோம்.

வழக்கமான வெளிப்பாடுகள் என்ன

பலர், முதலில் வழக்கமான வெளிப்பாடுகளைப் பார்க்கும்போது, ​​​​அவர்கள் அர்த்தமற்ற கதாபாத்திரங்களின் குழப்பத்தைப் பார்க்கிறார்கள் என்று உடனடியாக நினைக்கிறார்கள். ஆனால் இது, நிச்சயமாக, வழக்கில் இருந்து வெகு தொலைவில் உள்ளது. உதாரணமாக இந்த ரீஜெக்ஸைப் பாருங்கள்


எங்கள் கருத்துப்படி, ஒரு முழுமையான தொடக்கக்காரர் கூட இது எவ்வாறு இயங்குகிறது மற்றும் ஏன் தேவைப்படுகிறது என்பதை உடனடியாக புரிந்துகொள்வார் :) நீங்கள் அதை புரிந்து கொள்ளவில்லை என்றால், படிக்கவும், எல்லாம் சரியாகிவிடும்.
வழக்கமான வெளிப்பாடு என்பது sed அல்லது awk போன்ற நிரல்கள் உரையை வடிகட்ட பயன்படுத்தும் ஒரு வடிவமாகும். வார்ப்புருக்கள் தங்களைப் பிரதிநிதித்துவப்படுத்தும் வழக்கமான ASCII எழுத்துக்களைப் பயன்படுத்துகின்றன, மேலும் ஒரு சிறப்புப் பாத்திரத்தை வகிக்கும் மெட்டாக்ராக்டர்கள் என்று அழைக்கப்படுகின்றன, எடுத்துக்காட்டாக, சில எழுத்துக்களின் குழுக்களைக் குறிப்பிட அனுமதிக்கிறது.

வழக்கமான வெளிப்பாடுகளின் வகைகள்

வெவ்வேறு சூழல்களில் வழக்கமான வெளிப்பாடுகளை செயல்படுத்துதல், எடுத்துக்காட்டாக, ஜாவா, பெர்ல் மற்றும் பைதான் போன்ற நிரலாக்க மொழிகளிலும், மற்றும் லினக்ஸ் கருவிகளான sed, awk மற்றும் grep போன்றவற்றிலும், சில அம்சங்கள் உள்ளன. இந்த அம்சங்கள் வழக்கமான எக்ஸ்பிரஸ் என்ஜின்கள் என்று அழைக்கப்படுவதைப் பொறுத்தது, இது வடிவங்களை விளக்குகிறது.
லினக்ஸ் இரண்டு வழக்கமான எக்ஸ்பிரஸ் என்ஜின்களைக் கொண்டுள்ளது:
  • POSIX அடிப்படை ரெகுலர் எக்ஸ்பிரஷன் (BRE) தரநிலையை ஆதரிக்கும் இயந்திரம்.
  • POSIX நீட்டிக்கப்பட்ட வழக்கமான வெளிப்பாடு (ERE) தரநிலையை ஆதரிக்கும் ஒரு இயந்திரம்.
பெரும்பாலான லினக்ஸ் பயன்பாடுகள் குறைந்தபட்சம் POSIX BRE தரநிலைக்கு இணங்குகின்றன, ஆனால் சில பயன்பாடுகள் (sed உட்பட) BRE தரநிலையின் துணைக்குழுவை மட்டுமே புரிந்து கொள்கின்றன. இந்த வரம்புக்கான காரணங்களில் ஒன்று, உரை செயலாக்கத்தில் இதுபோன்ற பயன்பாடுகளை முடிந்தவரை விரைவாக செய்ய விரும்புவதாகும்.

POSIX ERE தரநிலை பெரும்பாலும் நிரலாக்க மொழிகளில் செயல்படுத்தப்படுகிறது. இது நீங்கள் பயன்படுத்த அனுமதிக்கிறது பெரிய தொகைவழக்கமான வெளிப்பாடுகளை உருவாக்குவதற்கான கருவிகள். எடுத்துக்காட்டாக, தனித்தனி வார்த்தைகள் அல்லது உரையில் எண்களின் தொகுப்புகளைத் தேடுவது போன்ற அடிக்கடி பயன்படுத்தப்படும் வடிவங்களுக்கான எழுத்துகளின் சிறப்பு வரிசைகளாக இவை இருக்கலாம். Awk ERE தரநிலையை ஆதரிக்கிறது.

புரோகிராமரின் கருத்து மற்றும் அவை உருவாக்கப்பட்ட இயந்திரத்தின் அம்சங்களைப் பொறுத்து வழக்கமான வெளிப்பாடுகளை உருவாக்க பல வழிகள் உள்ளன. எந்தவொரு இயந்திரமும் புரிந்துகொள்ளக்கூடிய உலகளாவிய வழக்கமான வெளிப்பாடுகளை எழுதுவது எளிதானது அல்ல. எனவே, நாங்கள் பொதுவாகப் பயன்படுத்தப்படும் வழக்கமான வெளிப்பாடுகளில் கவனம் செலுத்துவோம் மற்றும் அவை sed மற்றும் awk க்கான செயல்படுத்தலின் அம்சங்களைப் பார்ப்போம்.

POSIX BRE வழக்கமான வெளிப்பாடுகள்

உரையில் உள்ள எழுத்துக்களின் வரிசையின் சரியான நிகழ்வைத் தேடுவதற்கான வழக்கமான வெளிப்பாடாக எளிமையான BRE முறை இருக்கலாம். sed மற்றும் awk இல் சரத்தைத் தேடுவது இப்படித்தான் இருக்கும்:

$ எதிரொலி "இது ஒரு சோதனை" | sed -n "/test/p" $ எதிரொலி "இது ஒரு சோதனை" | awk "/test/(அச்சிடு $0)"

sed இல் வடிவத்தின் மூலம் உரையைக் கண்டறிதல்


awk இல் பேட்டர்ன் மூலம் உரையைக் கண்டறிதல்

கொடுக்கப்பட்ட வடிவத்திற்கான தேடல் வரியில் உள்ள உரையின் சரியான இருப்பிடத்தை கணக்கில் எடுத்துக் கொள்ளாமல் செய்யப்படுவதை நீங்கள் கவனிக்கலாம். கூடுதலாக, நிகழ்வுகளின் எண்ணிக்கை ஒரு பொருட்டல்ல. வழக்கமான வெளிப்பாடு கண்டுபிடித்த பிறகு உரை வழங்கப்பட்டதுவரியில் எங்கும், வரி பொருத்தமானதாகக் கருதப்பட்டு மேலும் செயலாக்கத்திற்கு அனுப்பப்படுகிறது.

வழக்கமான வெளிப்பாடுகளுடன் பணிபுரியும் போது, ​​​​அவை கேஸ் சென்சிட்டிவ் என்பதை நீங்கள் கணக்கில் எடுத்துக்கொள்ள வேண்டும்:

$ எதிரொலி "இது ஒரு சோதனை" | awk "/Test/(அச்சிடு $0)" $ எதிரொலி "இது ஒரு சோதனை" | awk "/test/(அச்சிடு $0)"

வழக்கமான வெளிப்பாடுகள் கேஸ் சென்சிட்டிவ்

முதல் வழக்கமான வெளிப்பாடு எந்தப் பொருத்தத்தையும் காணவில்லை, ஏனெனில் "சோதனை" என்ற வார்த்தை, பெரிய எழுத்தில் தொடங்கி, உரையில் தோன்றவில்லை. இரண்டாவது, பெரிய எழுத்துக்களில் எழுதப்பட்ட ஒரு வார்த்தையைத் தேட கட்டமைக்கப்பட்டது, ஸ்ட்ரீமில் பொருத்தமான வரியைக் கண்டறிந்தது.

வழக்கமான வெளிப்பாடுகளில், நீங்கள் எழுத்துக்களை மட்டுமல்ல, இடைவெளிகள் மற்றும் எண்களையும் பயன்படுத்தலாம்:

$ எதிரொலி "இது மீண்டும் ஒரு சோதனை 2" | awk "/test 2/(அச்சிடு $0)"

இடைவெளிகள் மற்றும் எண்களைக் கொண்ட உரையின் ஒரு பகுதியைக் கண்டறிதல்

வழக்கமான வெளிப்பாடு இயந்திரத்தால் இடைவெளிகள் வழக்கமான எழுத்துகளாகக் கருதப்படுகின்றன.

சிறப்பு சின்னங்கள்

பயன்படுத்தி பல்வேறு பாத்திரங்கள்வழக்கமான வெளிப்பாடுகளில், நீங்கள் சில அம்சங்களை கணக்கில் எடுத்துக்கொள்ள வேண்டும். எனவே, சில சிறப்பு எழுத்துக்கள் அல்லது மெட்டாக்ராக்டர்கள் உள்ளன, அவற்றை ஒரு டெம்ப்ளேட்டில் பயன்படுத்த ஒரு சிறப்பு அணுகுமுறை தேவைப்படுகிறது. இங்கே அவர்கள்:

.*^${}\+?|()
டெம்ப்ளேட்டில் அவற்றில் ஒன்று தேவைப்பட்டால், பின்சாய்வு (பின்சாய்வு) - \ ஐப் பயன்படுத்தி தப்பிக்க வேண்டும்.

எடுத்துக்காட்டாக, நீங்கள் உரையில் டாலர் அடையாளத்தைக் கண்டுபிடிக்க வேண்டும் என்றால், நீங்கள் அதை டெம்ப்ளேட்டில் சேர்க்க வேண்டும், அதற்கு முன் எஸ்கேப் கேரக்டர் இருக்கும். பின்வரும் உரையுடன் ஒரு கோப்பு myfile உள்ளது என்று வைத்துக்கொள்வோம்:

என் பாக்கெட்டில் 10$ இருக்கிறது
இந்த வடிவத்தைப் பயன்படுத்தி டாலர் அடையாளத்தைக் கண்டறியலாம்:

$awk "/\$/($0 ஐ அச்சிடு)" myfile

ஒரு வடிவத்தில் ஒரு சிறப்பு எழுத்தைப் பயன்படுத்துதல்

கூடுதலாக, பின்சாய்வு ஒரு சிறப்பு பாத்திரம், எனவே நீங்கள் அதை ஒரு வடிவத்தில் பயன்படுத்த வேண்டும் என்றால், அது தப்பிக்க வேண்டும். இரண்டு சாய்வுகள் ஒன்றையொன்று பின்தொடர்வது போல் தெரிகிறது:

$ எதிரொலி "\ என்பது ஒரு சிறப்பு எழுத்து" | awk "/\\/(அச்சிடு $0)"

ஒரு பின்சாய்வு தப்பித்தல்

மேலே உள்ள சிறப்பு எழுத்துகளின் பட்டியலில் முன்னோக்கி சாய்வு சேர்க்கப்படவில்லை என்றாலும், sed அல்லது awk க்காக எழுதப்பட்ட வழக்கமான வெளிப்பாட்டில் அதைப் பயன்படுத்த முயற்சித்தால் பிழை ஏற்படும்:

$ எதிரொலி "3/2" | awk "///($0 ஐ அச்சிட)"

ஒரு வடிவத்தில் முன்னோக்கி சாய்வின் தவறான பயன்பாடு

அது தேவைப்பட்டால், அதுவும் தப்பிக்க வேண்டும்:

$ எதிரொலி "3/2" | awk "/\//(அச்சிடு $0)"

முன்னோக்கி சாய்விலிருந்து தப்பித்தல்

ஆங்கர் சின்னங்கள்

உரைச் சரத்தின் ஆரம்பம் அல்லது முடிவுடன் ஒரு வடிவத்தை இணைக்க இரண்டு சிறப்பு எழுத்துக்கள் உள்ளன. தொப்பி எழுத்து - ^ உரை வரிகளின் தொடக்கத்தில் காணப்படும் எழுத்துக்களின் வரிசைகளை விவரிக்க உங்களை அனுமதிக்கிறது. நீங்கள் தேடும் பேட்டர்ன் சரத்தில் வேறு எங்காவது இருந்தால், வழக்கமான வெளிப்பாடு அதற்கு பதிலளிக்காது. இந்த சின்னத்தின் பயன்பாடு இதுபோல் தெரிகிறது:

$ எதிரொலி "Likegeeks இணையதளத்திற்கு வரவேற்கிறோம்" | awk "/^likegeeks/(அச்சு $0)" $ echo "likegeeks இணையதளம்" | awk "/^likegeeks/(அச்சிடு $0)"

ஒரு சரத்தின் தொடக்கத்தில் ஒரு வடிவத்தைக் கண்டறிதல்

^ எழுத்து ஒரு வரியின் தொடக்கத்தில் ஒரு வடிவத்தைத் தேட வடிவமைக்கப்பட்டுள்ளது, அதே நேரத்தில் எழுத்துக்களின் வழக்கும் கணக்கில் எடுத்துக்கொள்ளப்படுகிறது. உரை கோப்பின் செயலாக்கத்தை இது எவ்வாறு பாதிக்கிறது என்பதைப் பார்ப்போம்:

$awk "/^திஸ்/($0 ஐ அச்சிடு)" myfile


ஒரு கோப்பிலிருந்து உரையில் ஒரு வரியின் தொடக்கத்தில் ஒரு வடிவத்தைக் கண்டறிதல்

விதையைப் பயன்படுத்தும் போது, ​​மாதிரியின் உள்ளே எங்காவது ஒரு தொப்பியை வைத்தால், அது மற்ற வழக்கமான பாத்திரங்களைப் போலவே கருதப்படும்:

$ எதிரொலி "இது ^ ஒரு சோதனை" | sed -n "/s ^/p"

செட் உள்ள வடிவத்தின் தொடக்கத்தில் தொப்பி இல்லை

awk இல், அதே டெம்ப்ளேட்டைப் பயன்படுத்தும் போது, ​​இந்த எழுத்து தவிர்க்கப்பட வேண்டும்:

$ எதிரொலி "இது ^ ஒரு சோதனை" | awk "/s\^/(அச்சிடு $0)"

awk இல் உள்ள டெம்ப்ளேட்டின் தொடக்கத்தில் மறைக்க வேண்டாம்

ஒரு வரியின் தொடக்கத்தில் அமைந்துள்ள உரை துண்டுகளுக்கான தேடலை நாங்கள் கண்டுபிடித்துள்ளோம். ஒரு வரியின் முடிவில் ஏதாவது ஒன்றை நீங்கள் கண்டுபிடிக்க வேண்டும் என்றால் என்ன செய்வது?

டாலர் அடையாளம் - $, இது வரியின் முடிவின் நங்கூரம், இதற்கு எங்களுக்கு உதவும்:

$ எதிரொலி "இது ஒரு சோதனை" | awk "/test$/(அச்சிடு $0)"

ஒரு வரியின் முடிவில் உரையைக் கண்டறிதல்

நீங்கள் ஒரே டெம்ப்ளேட்டில் இரண்டு ஆங்கர் சின்னங்களையும் பயன்படுத்தலாம். பின்வரும் வழக்கமான வெளிப்பாட்டைப் பயன்படுத்தி, கோப்பு myfile ஐ செயலாக்குவோம், அதன் உள்ளடக்கங்கள் கீழே உள்ள படத்தில் காட்டப்பட்டுள்ளன:

$ awk "/^இது ஒரு சோதனை$/(அச்சிடு $0)" myfile


ஒரு வரியைத் தொடங்கவும் முடிக்கவும் சிறப்பு எழுத்துகளைப் பயன்படுத்தும் பேட்டர்ன்

நீங்கள் பார்க்க முடியும் என, வார்ப்புரு கொடுக்கப்பட்ட எழுத்துகளின் வரிசை மற்றும் அவற்றின் இருப்பிடத்துடன் முழுமையாக ஒத்திருக்கும் ஒரு வரிக்கு மட்டுமே பதிலளித்தது.

ஆங்கர் எழுத்துக்களைப் பயன்படுத்தி வெற்று வரிகளை வடிகட்டுவது எப்படி என்பது இங்கே:

$awk "!/^$/($0 ஐ அச்சிடு)" myfile
இந்த டெம்ப்ளேட்டில் நான் ஒரு மறுப்பு சின்னத்தை பயன்படுத்தினேன், ஒரு ஆச்சரியக்குறி - ! . இந்த வடிவத்தைப் பயன்படுத்தி, வரியின் தொடக்கத்திற்கும் முடிவிற்கும் இடையில் எதுவும் இல்லாத வரிகளைத் தேடுகிறது, மேலும் நன்றி ஆச்சரியக்குறிஇந்த வடிவத்துடன் பொருந்தாத வரிகள் மட்டுமே அச்சிடப்படுகின்றன.

புள்ளி சின்னம்

புதிய வரி எழுத்தைத் தவிர எந்த ஒரு எழுத்தையும் பொருத்த காலம் பயன்படுத்தப்படுகிறது. இந்த வழக்கமான வெளிப்பாட்டிற்கு myfile கோப்பை அனுப்புவோம், அதன் உள்ளடக்கங்கள் கீழே கொடுக்கப்பட்டுள்ளன:

$awk "/.st/($0 ஐ அச்சிடு)" myfile


வழக்கமான வெளிப்பாடுகளில் ஒரு புள்ளியைப் பயன்படுத்துதல்

வெளியீட்டுத் தரவிலிருந்து பார்க்க முடிந்தால், கோப்பின் முதல் இரண்டு வரிகள் மட்டுமே வடிவத்துடன் ஒத்துப்போகின்றன, ஏனெனில் அவை "st" எழுத்துகளின் வரிசையை மற்றொரு எழுத்துக்கு முன்னால் கொண்டிருக்கும், மூன்றாவது வரியில் பொருத்தமான வரிசை இல்லை, மேலும் நான்காவது அதைக் கொண்டுள்ளது, ஆனால் வரியின் ஆரம்பத்திலேயே உள்ளது.

எழுத்து வகுப்புகள்

எந்த ஒரு எழுத்துக்கும் ஒரு புள்ளி பொருந்துகிறது, ஆனால் நீங்கள் தேடும் எழுத்துகளின் தொகுப்பைக் கட்டுப்படுத்துவதில் நீங்கள் மிகவும் நெகிழ்வாக இருக்க விரும்பினால் என்ன செய்வது? இந்த சூழ்நிலையில், நீங்கள் எழுத்து வகுப்புகளைப் பயன்படுத்தலாம்.

இந்த அணுகுமுறைக்கு நன்றி, கொடுக்கப்பட்ட தொகுப்பிலிருந்து எந்த எழுத்துக்கான தேடலையும் நீங்கள் ஏற்பாடு செய்யலாம். எழுத்து வகுப்பை விவரிக்க, சதுர அடைப்புக்குறிகள் பயன்படுத்தப்படுகின்றன:

$awk "/th/($0 ஐ அச்சிடு)" myfile


வழக்கமான வெளிப்பாட்டில் எழுத்து வகுப்பின் விளக்கம்

இங்கு "o" எழுத்து அல்லது "i" எழுத்துக்கு முன் "th" எழுத்துகளின் வரிசையைத் தேடுகிறோம்.

பெரிய எழுத்து அல்லது சிறிய எழுத்துடன் தொடங்கக்கூடிய சொற்களைத் தேடும்போது வகுப்புகள் பயனுள்ளதாக இருக்கும்:

$ எதிரொலி "இது ஒரு சோதனை" | awk "/அவருடையது ஒரு சோதனை/(அச்சு $0)" $ எதிரொலி "இது ஒரு சோதனை" | awk "/அவருடையது ஒரு சோதனை/(அச்சிடு $0)"

சிறிய அல்லது பெரிய எழுத்துடன் தொடங்கும் வார்த்தைகளைத் தேடுங்கள்

எழுத்து வகுப்புகள் எழுத்துகளுக்கு மட்டும் அல்ல. மற்ற சின்னங்களை இங்கே பயன்படுத்தலாம். எந்த சூழ்நிலையில் வகுப்புகள் தேவைப்படும் என்பதை முன்கூட்டியே சொல்ல முடியாது - இவை அனைத்தும் தீர்க்கப்படும் சிக்கலைப் பொறுத்தது.

எழுத்து வகுப்புகளின் மறுப்பு

மேலே விவரிக்கப்பட்ட தலைகீழ் சிக்கலை தீர்க்க எழுத்து வகுப்புகள் பயன்படுத்தப்படலாம். அதாவது, ஒரு வகுப்பில் சேர்க்கப்பட்டுள்ள சின்னங்களைத் தேடுவதற்குப் பதிலாக, வகுப்பில் சேர்க்கப்படாத அனைத்தையும் தேட ஏற்பாடு செய்யலாம். இந்த வழக்கமான வெளிப்பாடு நடத்தையை அடைய, நீங்கள் வகுப்பு எழுத்துகளின் பட்டியலின் முன் ஒரு ^ அடையாளத்தை வைக்க வேண்டும். இது போல் தெரிகிறது:

$ awk "/[^oi]th/(அச்சிடு $0)" myfile


வகுப்பில் இல்லாத எழுத்துக்களைக் கண்டறிதல்

இந்த வழக்கில், "o" அல்லது "i" இல்லாத "th" எழுத்துக்களின் வரிசைகள் கண்டறியப்படும்.

எழுத்து வரம்புகள்

எழுத்து வகுப்புகளில், கோடுகளைப் பயன்படுத்தி எழுத்துகளின் வரம்புகளை விவரிக்கலாம்:

$awk "/st/($0 ஐ அச்சிடு)" myfile


ஒரு எழுத்து வகுப்பில் உள்ள எழுத்துக்களின் வரம்பின் விளக்கம்

IN இந்த எடுத்துக்காட்டில்வழக்கமான வெளிப்பாடு "st" எழுத்துக்களின் வரிசைக்கு முன் உள்ள எந்த எழுத்துக்கும் பதிலளிக்கிறது அகரவரிசையில், "e" மற்றும் "p" எழுத்துகளுக்கு இடையில்.

எண்களிலிருந்தும் வரம்புகளை உருவாக்கலாம்:

$ எதிரொலி "123" | awk "//" $ எதிரொலி "12a" | சரி "//"

ஏதேனும் மூன்று எண்களைக் கண்டறிய வழக்கமான வெளிப்பாடு

எழுத்து வகுப்பில் பல வரம்புகள் இருக்கலாம்:

$awk "/st/($0 ஐ அச்சிடு)" myfile


பல வரம்புகளைக் கொண்ட எழுத்து வகுப்பு

இந்த வழக்கமான வெளிப்பாடு "st" இன் அனைத்து வரிசைகளையும் எழுத்துகளுக்கு முன்னால் கண்டறியும் வரம்புகள் a-fமற்றும் m-z.

சிறப்பு எழுத்து வகுப்புகள்

வழக்கமான வெளிப்பாடுகளை எழுதும் போது நீங்கள் பயன்படுத்தக்கூடிய சிறப்பு எழுத்து வகுப்புகளை BRE கொண்டுள்ளது:
  • [[:alpha:]] - பெரிய அல்லது சிறிய எழுத்தில் எழுதப்பட்ட எந்த அகரவரிசையிலும் பொருந்தும்.
  • [[:alnum:]] - எந்த எண்ணெழுத்து எழுத்துக்கும் பொருந்தும், அதாவது 0-9 , A-Z , a-z .
  • [[:blank:]] - இடம் மற்றும் தாவல் எழுத்துடன் பொருந்துகிறது.
  • [[: இலக்கம்:]] - 0 முதல் 9 வரையிலான எந்த இலக்க எழுத்தும்.
  • [[:upper:]] - பெரிய எழுத்துக்கள் - A-Z .
  • [[:lower:]] - சிற்றெழுத்து அகரவரிசை எழுத்துகள் - a-z .
  • [[:print:]] - அச்சிடக்கூடிய எந்த எழுத்துக்கும் பொருந்தும்.
  • [[:punct:]] - நிறுத்தற்குறிகளுடன் பொருந்துகிறது.
  • [[:space:]] - இடைவெளி எழுத்துக்கள், குறிப்பாக - இடம், தாவல், எழுத்துக்கள் NL, FF, VT, CR.
இது போன்ற வார்ப்புருக்களில் நீங்கள் சிறப்பு வகுப்புகளைப் பயன்படுத்தலாம்:

$ எதிரொலி "abc" | awk "/[[:alpha:]]/(அச்சிடு $0)" $ echo "abc" | awk "/[[:digit:]]/(அச்சிடு $0)" $ echo "abc123" | awk "/[[:digit:]]/(அச்சிடு $0)"


வழக்கமான வெளிப்பாடுகளில் சிறப்பு எழுத்து வகுப்புகள்

நட்சத்திர சின்னம்

ஒரு வடிவத்தில் ஒரு எழுத்துக்குப் பின் நட்சத்திரக் குறியை வைத்தால், எழுத்து சரத்தில் எத்தனை முறை தோன்றினாலும் வழக்கமான வெளிப்பாடு வேலை செய்யும் என்று அர்த்தம் - சரத்தில் எழுத்து இல்லாத சூழ்நிலை உட்பட.

$ எதிரொலி "சோதனை" | awk "/tes*t/(அச்சு $0)" $ echo "tessst" | awk "/tes*t/(அச்சிடு $0)"


வழக்கமான வெளிப்பாடுகளில் * எழுத்தைப் பயன்படுத்துதல்

இந்த வைல்டு கார்டு பொதுவாக தொடர்ந்து தவறாக எழுதப்படும் சொற்களுக்கு அல்லது உட்பட்ட சொற்களுக்குப் பயன்படுத்தப்படுகிறது வெவ்வேறு மாறுபாடுகள்சரியான எழுத்துப்பிழை:

$ எதிரொலி "எனக்கு பச்சை நிறம் பிடிக்கும்" | awk "/colou*r/(அச்சிடு $0)" $ எதிரொலி "எனக்கு பச்சை நிறம் பிடிக்கும்" | awk "/colou*r/(அச்சிடு $0)"

வெவ்வேறு எழுத்துப்பிழைகளுடன் ஒரு வார்த்தையைக் கண்டறிதல்

இந்த எடுத்துக்காட்டில், அதே வழக்கமான வெளிப்பாடு "நிறம்" மற்றும் "வண்ணம்" என்ற வார்த்தை இரண்டிற்கும் பதிலளிக்கிறது. "u" என்ற எழுத்து, நட்சத்திரக் குறியைத் தொடர்ந்து, இல்லாமல் இருக்கலாம் அல்லது தொடர்ச்சியாக பல முறை தோன்றலாம் என்பதே இதற்குக் காரணம்.

நட்சத்திரக் குறியீட்டிலிருந்து வரும் மற்றொரு பயனுள்ள அம்சம், அதை ஒரு புள்ளியுடன் இணைப்பதாகும். இந்த கலவையானது வழக்கமான வெளிப்பாட்டை எந்த எண்ணிக்கையிலான எழுத்துக்களுக்கும் பதிலளிக்க அனுமதிக்கிறது:

$ awk "/this.*test/(அச்சிடு $0)" myfile


எந்த எழுத்துகளுக்கு வேண்டுமானாலும் பதிலளிக்கும் டெம்ப்ளேட்

இந்த வழக்கில், "இது" மற்றும் "சோதனை" என்ற வார்த்தைகளுக்கு இடையில் எத்தனை மற்றும் என்ன எழுத்துக்கள் உள்ளன என்பது முக்கியமல்ல.

நட்சத்திரக் குறியை எழுத்து வகுப்புகளிலும் பயன்படுத்தலாம்:

$ எதிரொலி "st" | awk "/s*t/(அச்சிடு $0)" $ எதிரொலி "sat" | awk "/s*t/(அச்சு $0)" $ எக்கோ "செட்" | awk "/s*t/(அச்சிடு $0)"


எழுத்து வகுப்புகளுடன் ஒரு நட்சத்திரத்தைப் பயன்படுத்துதல்

மூன்று எடுத்துக்காட்டுகளிலும், வழக்கமான வெளிப்பாடு வேலை செய்கிறது, ஏனெனில் எழுத்து வகுப்பிற்குப் பிறகு நட்சத்திரக் குறியீடு, "a" அல்லது "e" எழுத்துக்கள் ஏதேனும் காணப்பட்டால் அல்லது எதுவும் காணப்படவில்லை என்றால், சரம் கொடுக்கப்பட்ட வடிவத்துடன் பொருந்தும்.

POSIX ERE வழக்கமான வெளிப்பாடுகள்

POSIX ERE டெம்ப்ளேட்டுகள் சில லினக்ஸ் பயன்பாடுகள் கூடுதல் எழுத்துக்களைக் கொண்டிருக்கலாம். ஏற்கனவே குறிப்பிட்டுள்ளபடி, awk இந்த தரநிலையை ஆதரிக்கிறது, ஆனால் sed ஆதரிக்கவில்லை.

இங்கே நாம் ERE வடிவங்களில் பொதுவாகப் பயன்படுத்தப்படும் குறியீடுகளைப் பார்ப்போம், இது உங்கள் சொந்த வழக்கமான வெளிப்பாடுகளை உருவாக்கும் போது உங்களுக்கு பயனுள்ளதாக இருக்கும்.

▍கேள்விக்குறி

ஒரு கேள்விக்குறி, முந்தைய எழுத்து ஒருமுறை அல்லது உரையில் தோன்றாமல் இருக்கலாம் என்பதைக் குறிக்கிறது. இந்த பாத்திரம் மீண்டும் மீண்டும் வரும் மெட்டாக்ராக்டர்களில் ஒன்றாகும். இங்கே சில உதாரணங்கள்:

$ எதிரொலி "டெட்" | awk "/tes?t/(அச்சிடு $0)" $ எதிரொலி "சோதனை" | awk "/tes?t/(அச்சு $0)" $ echo "tesst" | awk "/tes?t/(அச்சிடு $0)"


வழக்கமான வெளிப்பாடுகளில் கேள்விக்குறி

நீங்கள் பார்க்க முடியும் என, மூன்றாவது வழக்கில் "s" எழுத்து இரண்டு முறை தோன்றும், எனவே வழக்கமான வெளிப்பாடு "சோதனை" என்ற வார்த்தைக்கு பதிலளிக்காது.

கேள்விக்குறியை எழுத்து வகுப்புகளிலும் பயன்படுத்தலாம்:

$ எதிரொலி "tst" | awk "/t?st/(அச்சிடு $0)" $ எதிரொலி "சோதனை" | awk "/t?st/(அச்சிடு $0)" $ எதிரொலி "சுவை" | awk "/t?st/(அச்சிடு $0)" $ echo "taest" | awk "/t?st/(அச்சிடு $0)" $ எதிரொலி "teest" | awk "/t?st/(அச்சிடு $0)"


கேள்விக்குறி மற்றும் எழுத்து வகுப்புகள்

வரியில் வகுப்பிலிருந்து எழுத்துக்கள் இல்லை என்றால், அல்லது அவற்றில் ஒன்று ஒரு முறை ஏற்பட்டால், வழக்கமான வெளிப்பாடு வேலை செய்கிறது, ஆனால் வார்த்தையில் இரண்டு எழுத்துக்கள் தோன்றியவுடன், கணினியானது உரையில் உள்ள வடிவத்துடன் பொருந்தாது.

▍பிளஸ் சின்னம்

முந்தைய எழுத்து உரையில் ஒன்று அல்லது அதற்கு மேற்பட்ட முறை ஏற்பட்டால், வழக்கமான வெளிப்பாடு அது தேடுவதைப் பொருத்தும் என்பதை வடிவத்தில் உள்ள பிளஸ் எழுத்து குறிக்கிறது. இருப்பினும், இந்த கட்டுமானம் ஒரு சின்னம் இல்லாததற்கு எதிர்வினையாற்றாது:

$ எதிரொலி "சோதனை" | awk "/te+st/(அச்சு $0)" $ echo "teest" | awk "/te+st/(அச்சு $0)" $ echo "tst" | awk "/te+st/(அச்சிடு $0)"


வழக்கமான வெளிப்பாடுகளில் பிளஸ் சின்னம்

இந்த எடுத்துக்காட்டில், வார்த்தையில் "e" எழுத்து இல்லை என்றால், வழக்கமான எக்ஸ்பிரஷன் எஞ்சின் உரையில் உள்ள வடிவத்துடன் பொருந்தாது. பிளஸ் சின்னம் எழுத்து வகுப்புகளுடன் வேலை செய்கிறது - இந்த வழியில் இது நட்சத்திரம் மற்றும் கேள்விக்குறி போன்றது:

$ எதிரொலி "tst" | awk "/t+st/(அச்சிடு $0)" $ எதிரொலி "சோதனை" | awk "/t+st/(அச்சிடு $0)" $ எக்கோ "டீஸ்ட்" | awk "/t+st/(அச்சு $0)" $ echo "teeast" | awk "/t+st/(அச்சிடு $0)"


பிளஸ் அடையாளம் மற்றும் எழுத்து வகுப்புகள்

இந்த வழக்கில், வரியில் வகுப்பிலிருந்து ஏதேனும் எழுத்து இருந்தால், உரை வடிவத்துடன் பொருந்துவதாகக் கருதப்படும்.

▍சுருள் பிரேஸ்கள்

ERE வடிவங்களில் பயன்படுத்தக்கூடிய சுருள் பிரேஸ்கள், மேலே விவாதிக்கப்பட்ட குறியீடுகளைப் போலவே இருக்கும், ஆனால் அவற்றுக்கு முந்தைய சின்னத்தின் தேவையான எண்ணிக்கையிலான நிகழ்வுகளை இன்னும் துல்லியமாகக் குறிப்பிட அவை உங்களை அனுமதிக்கின்றன. நீங்கள் இரண்டு வடிவங்களில் ஒரு கட்டுப்பாட்டைக் குறிப்பிடலாம்:
  • n - தேடப்பட்ட நிகழ்வுகளின் சரியான எண்ணிக்கையைக் குறிப்பிடும் எண்
  • n, m என்பது பின்வருமாறு விளக்கப்படும் இரண்டு எண்கள்: "குறைந்தது n முறை, ஆனால் m ஐ விட அதிகமாக இல்லை."
முதல் விருப்பத்தின் எடுத்துக்காட்டுகள் இங்கே:

$ எதிரொலி "tst" | awk "/te(1)st/(அச்சு $0)" $ எதிரொலி "சோதனை" | awk "/te(1)st/(அச்சிடு $0)"

வடிவங்களில் சுருள் பிரேஸ்கள், நிகழ்வுகளின் சரியான எண்ணிக்கையைத் தேடுகிறது

awk இன் பழைய பதிப்புகளில், நிரல் வழக்கமான வெளிப்பாடுகளில் இடைவெளிகளை அங்கீகரிக்க --re-interval கட்டளை வரி விருப்பத்தைப் பயன்படுத்த வேண்டும், ஆனால் புதிய பதிப்புகளில் இது தேவையில்லை.

$ எதிரொலி "tst" | awk "/te(1,2)st/(அச்சு $0)" $ எதிரொலி "சோதனை" | awk "/te(1,2)st/(அச்சு $0)" $ echo "teest" | awk "/te(1,2)st/(அச்சு $0)" $ echo "teeest" | awk "/te(1,2)st/(அச்சிடு $0)"


சுருள் பிரேஸ்களில் குறிப்பிடப்பட்ட இடைவெளி

இந்த எடுத்துக்காட்டில், "e" எழுத்து வரியில் 1 அல்லது 2 முறை தோன்ற வேண்டும், பின்னர் வழக்கமான வெளிப்பாடு உரைக்கு பதிலளிக்கும்.

சுருள் பிரேஸ்கள் எழுத்து வகுப்புகளுடன் பயன்படுத்தப்படலாம். நீங்கள் ஏற்கனவே அறிந்த கொள்கைகள் இங்கே பொருந்தும்:

$ எதிரொலி "tst" | awk "/t(1,2)st/(அச்சு $0)" $ எதிரொலி "சோதனை" | awk "/t(1,2)st/(அச்சு $0)" $ echo "teest" | awk "/t(1,2)st/(அச்சு $0)" $ echo "teeast" | awk "/t(1,2)st/(அச்சிடு $0)"


சுருள் பிரேஸ்கள் மற்றும் எழுத்து வகுப்புகள்

டெம்ப்ளேட் உரையில் “a” அல்லது “e” எழுத்து ஒன்று அல்லது இரண்டு முறை இருந்தால் அதற்கு எதிர்வினையாற்றும்.

▍தருக்க "அல்லது" சின்னம்

சின்னம் | - செங்குத்து பட்டை என்பது வழக்கமான வெளிப்பாடுகளில் தருக்க "அல்லது" என்று பொருள்படும். அத்தகைய அடையாளத்தால் பிரிக்கப்பட்ட பல துண்டுகளைக் கொண்ட வழக்கமான வெளிப்பாட்டை செயலாக்கும்போது, ​​​​எஞ்சின் பகுப்பாய்வு செய்யப்பட்ட உரை ஏதேனும் துண்டுகளுடன் பொருந்தினால் பொருத்தமானதாகக் கருதும். இங்கே ஒரு உதாரணம்:

$ எதிரொலி "இது ஒரு சோதனை" | awk "/test|தேர்வு/(அச்சு $0)" $ எதிரொலி "இது ஒரு தேர்வு" | awk "/test|தேர்வு/(அச்சிடு $0)" $ எதிரொலி "இது வேறு ஒன்று" | awk "/test|தேர்வு/($0 அச்சிட)"


வழக்கமான வெளிப்பாடுகளில் தருக்க "அல்லது"

இந்த எடுத்துக்காட்டில், "சோதனை" அல்லது "தேர்வு" என்ற சொற்களுக்கான உரையைத் தேட வழக்கமான வெளிப்பாடு கட்டமைக்கப்பட்டுள்ளது. டெம்ப்ளேட் துண்டுகளுக்கும் அவற்றைப் பிரிக்கும் சின்னத்திற்கும் இடையே | இடைவெளிகள் இருக்கக்கூடாது.

வழக்கமான வெளிப்பாடு துண்டுகளை அடைப்புக்குறிகளைப் பயன்படுத்தி தொகுக்கலாம். நீங்கள் ஒரு குறிப்பிட்ட வரிசை எழுத்துக்களை தொகுத்தால், அது ஒரு சாதாரண பாத்திரமாக கணினியால் உணரப்படும். அதாவது, எடுத்துக்காட்டாக, மறுபரிசீலனை மெட்டாக்ராக்டர்களை அதற்குப் பயன்படுத்தலாம். இது போல் தெரிகிறது:

$ எதிரொலி "லைக்" | awk "/Like(Geeks)?/(அச்சு $0)" $ echo "LikeGeeks" | awk "/Like(Geeks)?/($0ஐ அச்சிடு)"


வழக்கமான வெளிப்பாடு துண்டுகளை தொகுத்தல்

இந்த எடுத்துக்காட்டுகளில், "கீக்ஸ்" என்ற வார்த்தை அடைப்புக்குறிக்குள் இணைக்கப்பட்டுள்ளது, அதைத் தொடர்ந்து ஒரு கேள்விக்குறி உள்ளது. ஒரு கேள்விக்குறி என்பது "0 அல்லது 1 மறுபடியும்" என்று பொருள்படும் என்பதை நினைவில் கொள்க, எனவே வழக்கமான வெளிப்பாடு "Like" மற்றும் "LikeGeeks" என்ற சரம் இரண்டிற்கும் பதிலளிக்கும்.

நடைமுறை எடுத்துக்காட்டுகள்

இப்போது வழக்கமான வெளிப்பாடுகளின் அடிப்படைகளை நாங்கள் உள்ளடக்கியுள்ளோம், அவற்றுடன் பயனுள்ள ஒன்றைச் செய்ய வேண்டிய நேரம் இது.

▍கோப்புகளின் எண்ணிக்கையை எண்ணுதல்

ஒரு மாறியில் எழுதப்பட்ட கோப்பகங்களில் உள்ள கோப்புகளை கணக்கிடும் ஒரு பாஷ் ஸ்கிரிப்டை எழுதுவோம் சுற்றுச்சூழல் பாதை. இதைச் செய்ய, நீங்கள் முதலில் அடைவு பாதைகளின் பட்டியலை உருவாக்க வேண்டும். sed ஐப் பயன்படுத்தி, பெருங்குடல்களை இடைவெளிகளுடன் மாற்றுவோம்:

$ எதிரொலி $PATH | sed "s/:/ /g"
மாற்று கட்டளையானது வழக்கமான வெளிப்பாடுகளை உரையைத் தேடுவதற்கான வடிவங்களாக ஆதரிக்கிறது. இந்த விஷயத்தில், எல்லாம் மிகவும் எளிமையானது, நாங்கள் பெருங்குடல் சின்னத்தைத் தேடுகிறோம், ஆனால் இங்கே வேறு எதையாவது பயன்படுத்த யாரும் எங்களைத் தொந்தரவு செய்யவில்லை - இவை அனைத்தும் குறிப்பிட்ட பணியைப் பொறுத்தது.
இப்போது நீங்கள் விளைந்த பட்டியலை ஒரு சுழற்சியில் சென்று கோப்புகளின் எண்ணிக்கையை எண்ண தேவையான செயல்களைச் செய்ய வேண்டும். ஸ்கிரிப்ட்டின் பொதுவான அவுட்லைன் இப்படி இருக்கும்:

Mypath=$(echo $PATH | sed "s/:/ /g") $mypath இல் உள்ள கோப்பகத்திற்கான
இப்போது ஸ்கிரிப்ட்டின் முழு உரையையும் எழுதுவோம், ஒவ்வொரு கோப்பகத்திலும் உள்ள கோப்புகளின் எண்ணிக்கையைப் பற்றிய தகவலைப் பெற ls கட்டளையைப் பயன்படுத்தவும்:

#!/bin/bash mypath=$(echo $PATH | sed "s/:/ /g") count=0 for directory for $mypath do check=$(ls $directory) இல் உள்ள உருப்படிக்கு $check do count=$ [ $count + 1 ] முடிந்தது எதிரொலி "$டைரக்டரி - $count" எண்ணிக்கை=0 முடிந்தது
ஸ்கிரிப்டை இயக்கும் போது, ​​PATH இலிருந்து சில கோப்பகங்கள் இல்லை என்று மாறிவிடும், இருப்பினும், இது ஏற்கனவே உள்ள கோப்பகங்களில் உள்ள கோப்புகளை எண்ணுவதைத் தடுக்காது.


கோப்பு எண்ணிக்கை

இந்த எடுத்துக்காட்டின் முக்கிய மதிப்பு என்னவென்றால், அதே அணுகுமுறையைப் பயன்படுத்தி, நீங்கள் மிகவும் சிக்கலான சிக்கல்களை தீர்க்க முடியும். எது உங்கள் தேவைகளைப் பொறுத்தது.

▍மின்னஞ்சல் முகவரிகளை சரிபார்க்கிறது

முகவரிகளைச் சரிபார்க்க உங்களை அனுமதிக்கும் வழக்கமான வெளிப்பாடுகளின் பெரிய தொகுப்புகளைக் கொண்ட இணையதளங்கள் உள்ளன மின்னஞ்சல், தொலைபேசி எண்கள், மற்றும் பல. இருப்பினும், ஆயத்தமாக எதையாவது எடுத்துக்கொள்வது ஒரு விஷயம், மேலும் அதை நீங்களே உருவாக்குவது மற்றொரு விஷயம். எனவே மின்னஞ்சல் முகவரிகளைச் சரிபார்க்க வழக்கமான வெளிப்பாட்டை எழுதுவோம். மூலத் தரவை பகுப்பாய்வு செய்வதோடு ஆரம்பிக்கலாம். இங்கே, எடுத்துக்காட்டாக, ஒரு குறிப்பிட்ட முகவரி:

[மின்னஞ்சல் பாதுகாக்கப்பட்டது]
பயனர்பெயர், பயனர்பெயர், எண்ணெழுத்து மற்றும் வேறு சில எழுத்துக்களைக் கொண்டிருக்கலாம். அதாவது, இது ஒரு புள்ளி, ஒரு கோடு, ஒரு அடிக்கோடி, ஒரு கூட்டல் அடையாளம். பயனர்பெயரை தொடர்ந்து @ அடையாளம் உள்ளது.

இந்த அறிவைக் கொண்டு, பயனர்பெயரைச் சரிபார்க்கப் பயன்படும் வழக்கமான வெளிப்பாட்டை அதன் இடது பக்கத்திலிருந்து இணைக்கத் தொடங்குவோம். எங்களிடம் கிடைத்தது இங்கே:

^(+)@
இந்த வழக்கமான வெளிப்பாட்டை பின்வருமாறு படிக்கலாம்: "கோடு சதுர அடைப்புக்குறிக்குள் குறிப்பிடப்பட்ட குழுவில் இருந்து குறைந்தபட்சம் ஒரு எழுத்துடன் தொடங்க வேண்டும், அதைத் தொடர்ந்து @ அடையாளம்."

இப்போது - ஹோஸ்ட்பெயர் வரிசை - ஹோஸ்ட்பெயர் . பயனர்பெயருக்கும் அதே விதிகள் இங்கே பொருந்தும், எனவே அதற்கான டெம்ப்ளேட் இப்படி இருக்கும்:

(+)
மேல் நிலை டொமைன் பெயர் உட்பட்டது சிறப்பு விதிகள். அகரவரிசை எழுத்துக்கள் மட்டுமே இருக்க முடியும், அவற்றில் குறைந்தது இரண்டு இருக்க வேண்டும் (உதாரணமாக, அத்தகைய டொமைன்கள் பொதுவாக ஒரு நாட்டின் குறியீட்டைக் கொண்டிருக்கும்), மேலும் ஐந்துக்கு மேல் இல்லை. இவை அனைத்தும் முகவரியின் கடைசி பகுதியைச் சரிபார்ப்பதற்கான டெம்ப்ளேட் இப்படி இருக்கும்:

\.({2,5})$
நீங்கள் இதைப் படிக்கலாம்: "முதலில் ஒரு காலம் இருக்க வேண்டும், பின்னர் 2 முதல் 5 அகரவரிசை எழுத்துக்கள் இருக்க வேண்டும், அதன் பிறகு வரி முடிவடைகிறது."

வழக்கமான வெளிப்பாட்டின் தனித்தனி பகுதிகளுக்கான வார்ப்புருக்களை தயார் செய்து, அவற்றை ஒன்றாக இணைக்கலாம்:

^(+)@(+)\.({2,5})$
இப்போது எஞ்சியிருப்பது என்ன நடந்தது என்பதைச் சோதிப்பதுதான்:

$ எதிரொலி " [மின்னஞ்சல் பாதுகாக்கப்பட்டது]" | awk "/^(+)@(+)\.((2,5))$/(அச்சிடு $0)" $ echo " [மின்னஞ்சல் பாதுகாக்கப்பட்டது]" | awk "/^(+)@(+)\.((2,5))$/(அச்சிடு $0)"


வழக்கமான வெளிப்பாடுகளைப் பயன்படுத்தி மின்னஞ்சல் முகவரியைச் சரிபார்த்தல்

awk க்கு அனுப்பப்பட்ட உரை திரையில் காட்டப்படுவதால், கணினி அதை மின்னஞ்சல் முகவரியாக அங்கீகரித்துள்ளது.

முடிவுகள்

கட்டுரையின் ஆரம்பத்தில் நீங்கள் பார்த்த மின்னஞ்சல் முகவரிகளைச் சரிபார்ப்பதற்கான வழக்கமான வெளிப்பாடு அப்போது முற்றிலும் புரிந்துகொள்ள முடியாததாகத் தோன்றினால், இப்போது அது அர்த்தமற்ற எழுத்துக்களாகத் தோன்றாது என்று நம்புகிறோம். இது உண்மையில் அப்படி என்றால், அர்த்தம் இந்த பொருள்அதன் நோக்கத்தை நிறைவேற்றியது. உண்மையில், வழக்கமான வெளிப்பாடுகள் நீங்கள் வாழ்நாள் முழுவதும் படிக்கக்கூடிய ஒரு தலைப்பாகும், ஆனால் நாங்கள் உள்ளடக்கிய சிறியது கூட, மிகவும் மேம்பட்ட உரைகளை செயலாக்கும் ஸ்கிரிப்ட்களை எழுத உங்களுக்கு உதவும்.

இந்த தொடரில் நாங்கள் வழக்கமாக மிகவும் காட்டினோம் எளிய உதாரணங்கள்பாஷ் ஸ்கிரிப்ட்கள் பல வரிகளைக் கொண்டிருந்தன. அடுத்த முறை பெரிய விஷயத்தைப் பார்ப்போம்.

அன்பான வாசகர்களே! கட்டளை வரி ஸ்கிரிப்ட்களில் உரையைச் செயலாக்கும்போது வழக்கமான வெளிப்பாடுகளைப் பயன்படுத்துகிறீர்களா?

மிகவும் பயனுள்ள மற்றும் அம்சம் நிறைந்த அணிகளில் ஒன்று லினக்ஸ் டெர்மினல்- "grep" கட்டளை. Grep என்பது "உலகளாவிய வழக்கமான வெளிப்பாடு அச்சு" (அதாவது, "வழக்கமான வெளிப்பாட்டுடன் பொருந்தக்கூடிய சரங்களை எல்லா இடங்களிலும் தேடி அவற்றை அச்சிடவும்") என்பதன் சுருக்கமாகும். அதாவது, உள்ளீடு குறிப்பிட்ட வடிவங்களுடன் பொருந்துகிறதா என்பதைப் பார்க்க grep ஐப் பயன்படுத்தலாம்.

இந்த வெளித்தோற்றத்தில் அற்பமான நிரல் சரியாக பயன்படுத்தப்படும் போது மிகவும் சக்தி வாய்ந்தது. சிக்கலான விதிகளின் அடிப்படையில் உள்ளீட்டை வரிசைப்படுத்தும் அதன் திறன் பல கட்டளைச் சங்கிலிகளில் பிரபலமான இணைப்பாக அமைகிறது.

இந்த டுடோரியல் grep கட்டளையின் சில திறன்களைப் பார்த்து பின்னர் வழக்கமான வெளிப்பாடுகளைப் பயன்படுத்துகிறது. அனைத்தும் விவரிக்கப்பட்டுள்ளன இந்த கையேடுமெய்நிகர் சேவையகத்தை நிர்வகிப்பதில் நுட்பங்களைப் பயன்படுத்தலாம்.

பயன்பாட்டின் அடிப்படைகள்

அதன் எளிமையான வடிவத்தில், ஒரு உரை கோப்பில் எழுத்து வடிவங்களின் பொருத்தங்களைக் கண்டறிய grep பயன்படுகிறது. அதாவது, grep-க்கு ஒரு தேடல் வார்த்தை கொடுக்கப்பட்டால், அது அந்த வார்த்தையைக் கொண்ட கோப்பில் உள்ள ஒவ்வொரு வரியையும் அச்சிடும்.

உதாரணமாக, உபுண்டு கணினியில் உள்ள GNU பொது பொது உரிமத்தின் பதிப்பு 3 இல் "GNU" என்ற வார்த்தையைக் கொண்ட வரிகளைக் கண்டறிய grep ஐப் பயன்படுத்தலாம்.

cd /usr/share/common-licenses
grep "GNU" GPL-3
GNU பொது பொது உரிமம்





13. GNU Affero பொது பொது உரிமத்துடன் பயன்படுத்தவும்.
GNU Affero பொது பொது உரிமத்தின் பதிப்பு 3 இன் கீழ் ஒரு ஒற்றை
...
...

முதல் வாதம், "GNU", தேடுவதற்கான வடிவமாகும், மற்றும் இரண்டாவது வாதம், "GPL-3" என்பது உள்ளீட்டு கோப்பு.

இதன் விளைவாக, உரை வடிவத்தைக் கொண்ட அனைத்து வரிகளும் வெளியீடாக இருக்கும். சிலவற்றில் லினக்ஸ் விநியோகங்கள்நீங்கள் தேடும் முறை வெளியீட்டு வரிகளில் முன்னிலைப்படுத்தப்படும்.

பொதுவான விருப்பங்கள்

முன்னிருப்பாக, grep கட்டளையானது உள்ளீட்டு கோப்பில் கண்டிப்பாக குறிப்பிடப்பட்ட வடிவங்களைத் தேடுகிறது மற்றும் அது கண்டுபிடிக்கும் வரிகளை அச்சிடுகிறது. இருப்பினும், சில கூடுதல் கொடிகளைச் சேர்ப்பதன் மூலம் grep இன் நடத்தையை மாற்றலாம்.

நீங்கள் தேடல் அளவுருவின் வழக்கைப் புறக்கணித்து, வடிவத்தின் பெரிய எழுத்து மற்றும் சிறிய எழுத்து மாறுபாடுகளைத் தேட வேண்டும் என்றால், நீங்கள் "-i" அல்லது "--ignore-case" பயன்பாடுகளைப் பயன்படுத்தலாம்.

உதாரணமாக, பெரிய எழுத்து, சிற்றெழுத்து அல்லது கலப்பு எழுத்துக்களில் எழுதப்பட்ட "உரிமம்" என்ற வார்த்தைக்காக அதே கோப்பைத் தேட நீங்கள் grep ஐப் பயன்படுத்தலாம்.

grep -i "உரிமம்" GPL-3
GNU பொது பொது உரிமம்
இந்த உரிம ஆவணம், ஆனால் அதை மாற்றுவது அனுமதிக்கப்படாது.
குனு பொது பொது உரிமம் ஒரு இலவச, காப்பிலெஃப்ட் உரிமம்
பெரும்பாலான மென்பொருள் மற்றும் பிற நடைமுறை வேலைகளுக்கான உரிமங்கள் வடிவமைக்கப்பட்டுள்ளன
GNU பொது பொது உரிமம் உங்கள் சுதந்திரத்திற்கு உத்தரவாதம் அளிக்கும் நோக்கம் கொண்டது
எங்களின் பெரும்பாலான மென்பொருட்களுக்கான குனு பொது பொது உரிமம்; இதுவும் பொருந்தும்


"இந்த உரிமம்" என்பது குனு பொது பொது உரிமத்தின் பதிப்பு 3 ஐக் குறிக்கிறது.
"தி ப்ரோக்ராம்" என்பது இதன் கீழ் உரிமம் பெற்ற எந்தவொரு பதிப்புரிமைக்குரிய படைப்பையும் குறிக்கிறது
...
...

நீங்கள் பார்க்க முடியும் என, வெளியீட்டில் "உரிமம்", "உரிமம்" மற்றும் "உரிமம்" ஆகியவை உள்ளன. கோப்பில் "LiCeNsE" இன் நிகழ்வு இருந்தால், அதுவும் வெளியீடாக இருக்கும்.
குறிப்பிட்ட வடிவத்தைக் கொண்டிருக்காத அனைத்து வரிகளையும் நீங்கள் கண்டுபிடிக்க வேண்டும் என்றால், நீங்கள் "-v" அல்லது "--invert-match" கொடிகளைப் பயன்படுத்தலாம்.

உதாரணமாக, "the" என்ற வார்த்தையைக் கொண்டிருக்காத அனைத்து வரிகளுக்கும் BSD உரிமத்தைத் தேட பின்வரும் கட்டளையைப் பயன்படுத்தலாம்:

grep -v "தி" BSD
அனைத்து உரிமைகளும் பாதுகாக்கப்பட்டவை.
மூல மற்றும் பைனரி வடிவங்களில் மறுபகிர்வு மற்றும் பயன்பாடு, அல்லது இல்லாமல்
சந்திக்கிறார்கள்:
இந்த மென்பொருளிலிருந்து பெறப்பட்ட தயாரிப்புகளை அங்கீகரிக்க அல்லது விளம்பரப்படுத்த பயன்படுத்தப்படலாம்
குறிப்பிட்ட முன் எழுத்துப்பூர்வ அனுமதி இல்லாமல்.
இந்த மென்பொருள் பிரதிநிதிகள் மற்றும் பங்களிப்பாளர்களால் வழங்கப்படுகிறது ``உள்ளபடியே"" மற்றும்
எந்தவொரு வெளிப்படையான அல்லது மறைமுகமான உத்திரவாதங்கள், உட்பட, ஆனால் இவை மட்டும் அல்ல
...
...

நீங்கள் பார்க்கிறபடி, கடைசி இரண்டு வரிகள் "தி" என்ற வார்த்தையைக் கொண்டிருக்கவில்லை, ஏனெனில் "புறக்கணிப்பு" கட்டளை பயன்படுத்தப்படவில்லை.

பொருத்தங்கள் கண்டுபிடிக்கப்பட்ட வரி எண்களை அறிந்து கொள்வது எப்போதும் பயனுள்ளதாக இருக்கும். "-n" அல்லது "--line-number" கொடிகளைப் பயன்படுத்தி அவற்றைக் காணலாம்.

முந்தைய எடுத்துக்காட்டில் இந்தக் கொடியைப் பயன்படுத்தினால், பின்வரும் முடிவு காட்டப்படும்:

grep -vn "தி" BSD
2:அனைத்து உரிமைகளும் பாதுகாக்கப்பட்டவை.
3:
4:மறுபகிர்வு மற்றும் மூல மற்றும் பைனரி வடிவங்களில், அல்லது இல்லாமல்
6: சந்திக்கிறார்கள்:
13: இந்த மென்பொருளிலிருந்து பெறப்பட்ட தயாரிப்புகளை அங்கீகரிக்க அல்லது விளம்பரப்படுத்த பயன்படுத்தப்படலாம்
14: குறிப்பிட்ட முன் எழுத்துப்பூர்வ அனுமதி இல்லாமல்.
15:
16:இந்த மென்பொருள் ரீஜென்ட்கள் மற்றும் பங்களிப்பாளர்களால் வழங்கப்படுகிறது ``உள்ளபடியே"" மற்றும்
17:எந்தவொரு வெளிப்படையான அல்லது மறைமுகமான உத்திரவாதங்கள் உட்பட, ஆனால் இவை மட்டும் அல்ல
...
...

"தி" இல்லாத ஒவ்வொரு வரியிலும் நீங்கள் மாற்றங்களைச் செய்ய வேண்டியிருக்கும் போது, ​​நீங்கள் இப்போது வரி எண்ணைக் குறிப்பிடலாம்.

வழக்கமான வெளிப்பாடுகள்

அறிமுகத்தில் குறிப்பிட்டுள்ளபடி, grep என்பது "உலகளாவிய வழக்கமான வெளிப்பாடு அச்சு" என்பதைக் குறிக்கிறது. வழக்கமான வெளிப்பாடு என்பது ஒரு குறிப்பிட்ட தேடல் வடிவத்தை விவரிக்கும் உரைச் சரம்.

வெவ்வேறு பயன்பாடுகள் மற்றும் நிரலாக்க மொழிகள் வழக்கமான வெளிப்பாடுகளை சற்று வித்தியாசமாகப் பயன்படுத்துகின்றன. இந்த டுடோரியல் Grep க்கான வடிவங்களை விவரிக்க ஒரு சிறிய துணைக்குழுவை மட்டுமே உள்ளடக்கியது.

எழுத்துப் பொருத்தங்கள்

மேலே உள்ள "GNU" மற்றும் "the" சொற்களைத் தேடுவதற்கான எடுத்துக்காட்டுகளில், "GNU" மற்றும் "the" என்ற எழுத்துச்சரத்துடன் சரியாகப் பொருந்தக்கூடிய மிகவும் எளிமையான வழக்கமான வெளிப்பாடுகள் தேடப்பட்டன.

அவற்றை வார்த்தைகளின் பொருத்தங்கள் என்று கருதாமல் எழுத்துக்களின் சரங்களின் பொருத்தங்கள் என்று நினைப்பது மிகவும் சரியானது. நீங்கள் மிகவும் சிக்கலான வடிவங்களை நன்கு அறிந்தவுடன், இந்த வேறுபாடு மிகவும் குறிப்பிடத்தக்கதாக மாறும்.

கொடுக்கப்பட்ட எழுத்துகளுடன் சரியாகப் பொருந்தக்கூடிய வடிவங்கள் "எழுத்து" வடிவங்கள் என்று அழைக்கப்படுகின்றன, ஏனெனில் அவை எழுத்துக்கு எழுத்து, எழுத்துக்கு எழுத்து ஆகியவற்றுடன் பொருந்துகின்றன.

அனைத்து அகரவரிசை மற்றும் எண் எழுத்துக்கள் (மற்றும் சில எழுத்துக்கள்) மற்ற வெளிப்பாடு வழிமுறைகளால் மாற்றியமைக்கப்படாவிட்டால், அவை உண்மையில் பொருந்தும்.

ஆங்கர் போட்டிகள்

ஆங்கர்கள் என்பது விரும்பிய போட்டியின் சரத்தில் இருப்பிடத்தைக் குறிக்கும் சிறப்பு எழுத்துக்கள்.

எடுத்துக்காட்டாக, தேடலுக்கு ஆரம்பத்தில் “குனு” என்ற வார்த்தையைக் கொண்ட வரிகள் மட்டுமே தேவை என்பதை நீங்கள் குறிப்பிடலாம். இதைச் செய்ய, நீங்கள் எழுத்து சரத்திற்கு முன் "^" என்ற நங்கூரத்தைப் பயன்படுத்த வேண்டும்.

இந்த உதாரணம் ஆரம்பத்தில் "GNU" என்ற வார்த்தையைக் கொண்ட வரிகளை மட்டுமே அச்சிடுகிறது.

grep "^GNU" GPL-3
எங்களின் பெரும்பாலான மென்பொருட்களுக்கான குனு பொது பொது உரிமம்; இதுவும் பொருந்தும்
குனு பொது பொது உரிமம், இதுவரை வெளியிடப்பட்ட எந்த பதிப்பையும் நீங்கள் தேர்வு செய்யலாம்

அதேபோல, தேடப்படும் எழுத்துச்சரம் உரைச் சரத்தின் முடிவில் இருந்தால் மட்டுமே பொருத்தம் செல்லுபடியாகும் என்பதைக் குறிக்க, எழுத்துச்சரத்திற்குப் பிறகு "$" என்ற ஆங்கரைப் பயன்படுத்தலாம்.

பின்வரும் வழக்கமான வெளிப்பாடு இறுதியில் "மற்றும்" கொண்டிருக்கும் வரிகளை மட்டுமே அச்சிடுகிறது:

grep "மற்றும் $" GPL-3
இந்த இலவச மென்பொருளுக்கு எந்த உத்தரவாதமும் இல்லை. இரு பயனர்களுக்கும்" மற்றும்
நகலெடுத்தல், விநியோகம் மற்றும் ஆகியவற்றிற்கான துல்லியமான விதிமுறைகள் மற்றும் நிபந்தனைகள்


மாற்று எப்போதாவது மற்றும் வணிக ரீதியாக மட்டுமே அனுமதிக்கப்படுகிறது, மற்றும்
மாற்றியமைக்கும் போது நெட்வொர்க் மறுக்கப்படலாம்
நெட்வொர்க்கின் செயல்பாட்டை மோசமாக பாதிக்கிறது அல்லது விதிகளை மீறுகிறது மற்றும்
தற்காலிகமாக, பதிப்புரிமைதாரர் வெளிப்படையாக மற்றும் வரை
அசல் உரிமதாரர்களிடமிருந்து உரிமம் பெறுகிறது, இயக்க, மாற்ற மற்றும்
உருவாக்கவும், பயன்படுத்தவும், விற்கவும், விற்பனைக்கு வழங்கவும், இறக்குமதி செய்யவும், இல்லையெனில் இயக்கவும், மாற்றவும் மற்றும்

எந்த கதாபாத்திரத்தையும் பொருத்துங்கள்

குறிப்பிட்ட இடத்தில் எந்த எழுத்தும் தோன்றலாம் என்பதைக் குறிக்க, வழக்கமான வெளிப்பாடுகளில் காலம் (.) பயன்படுத்தப்படுகிறது.

எடுத்துக்காட்டாக, இரண்டு எழுத்துகள் மற்றும் "செப்ட்" என்ற வரிசையைக் கொண்ட பொருத்தங்களைக் கண்டறிய விரும்பினால், பின்வரும் வடிவத்தைப் பயன்படுத்துவீர்கள்:

grep "..cept" GPL-3
பயன்படுத்த, இது மிகவும் ஏற்றுக்கொள்ள முடியாதது. எனவே, நாங்கள்
பொருந்தக்கூடிய பதிப்புரிமைச் சட்டத்தின் கீழ் மீறல், அதை செயல்படுத்துவதைத் தவிர
பணிக்கு எந்த உத்தரவாதமும் இல்லை என்று பயனரிடம் கூறுகிறது (தவிர

தனித்தனியாக எழுதப்பட்ட உரிமத்தின் வடிவம், அல்லது விதிவிலக்காகக் கூறப்பட்டது;
மூடிமறைக்கப்பட்ட படைப்பை வெளிப்படையாகத் தவிர நீங்கள் பிரச்சாரம் செய்யவோ மாற்றவோ கூடாது
9. நகல்களை வைத்திருப்பதற்கு ஏற்றுக்கொள்ளல் தேவையில்லை.
...
...

நீங்கள் பார்க்க முடியும் என, முடிவுகளில் "ஏற்றுக்கொள்" மற்றும் "தவிர" மற்றும் இந்த வார்த்தைகளின் மாறுபாடுகளும் அடங்கும். உரையில் இருந்தால் "z2cept" வரிசையுடன் பேட்டர்ன் பொருந்தும்.

அடைப்புக்குறிக்குள் வெளிப்பாடுகள்

சதுர அடைப்புக்குறிக்குள் ("") எழுத்துகளின் குழுவை வைப்பதன் மூலம், அடைப்புக்குறிக்குள் உள்ள எந்த எழுத்துகளும் அந்த நிலையில் தோன்றும் என்பதைக் குறிக்கலாம்.

அதாவது, "டூ" அல்லது "இரண்டு" கொண்ட சரங்களை நீங்கள் கண்டுபிடிக்க வேண்டும் என்றால், பின்வரும் வடிவத்தைப் பயன்படுத்தி இந்த மாறுபாடுகளை சுருக்கமாகக் குறிப்பிடலாம்:

grep "to" GPL-3
உங்கள் திட்டங்கள் கூட.

GNU GPL ஐப் பயன்படுத்தும் டெவலப்பர்கள் உங்கள் உரிமைகளை இரண்டு படிகளில் பாதுகாக்கிறார்கள்:
ஒரு கணினி நெட்வொர்க், நகல் பரிமாற்றம் இல்லாமல், தெரிவிக்கவில்லை.

பிணைய சேவையகத்திலிருந்து எந்த கட்டணமும் இல்லாமல் தொடர்புடைய ஆதாரம்.
...
...

நீங்கள் பார்க்க முடியும் என, இரண்டு மாறுபாடுகளும் கோப்பில் காணப்பட்டன.

அடைப்புக்குறிக்குள் எழுத்துக்களை வைப்பதும் பல பயனுள்ள அம்சங்களை வழங்குகிறது. அடைப்புக்குறிக்குள் உள்ள எழுத்துகளின் பட்டியலை "^" என்ற எழுத்துடன் தொடங்குவதன் மூலம் அடைப்புக்குறிக்குள் உள்ள எழுத்துக்களைத் தவிர மற்ற அனைத்தும் வடிவத்துடன் பொருந்துகின்றன என்பதை நீங்கள் குறிப்பிடலாம்.

இந்த எடுத்துக்காட்டு ".ode" வடிவத்தைப் பயன்படுத்துகிறது, இது "குறியீடு" வரிசையுடன் பொருந்தக்கூடாது.

grep "[^c]ode" GPL-3
1. மூல குறியீடு.
மாதிரி, பொருள் குறியீட்டை வைத்திருக்கும் எவருக்கும் கொடுக்க (1) a
தயாரிப்பின் ஒரே குறிப்பிடத்தக்க பயன்முறை.
ஊடாடும் பயன்முறையில் தொடங்கும் போது இது போன்றவற்றைக் கவனியுங்கள்:

இரண்டாவது வரி வெளியீட்டில் "குறியீடு" என்ற வார்த்தை உள்ளது என்பது கவனிக்கத்தக்கது. இது ஒரு regex அல்லது grep பிழை அல்ல.

மாறாக, இந்த வரி அச்சிடப்பட்டது, ஏனெனில் இது "மாடல்" என்ற வார்த்தையில் காணப்படும் "முறை" என்ற மாதிரி-பொருந்தும் வரிசையையும் கொண்டுள்ளது. அதாவது, சரம் மாதிரியுடன் பொருந்தியதால் அச்சிடப்பட்டது.

மற்றொன்று பயனுள்ள அம்சம்அடைப்புக்குறிகள் - ஒவ்வொரு எழுத்தையும் தனித்தனியாக உள்ளிடுவதற்குப் பதிலாக எழுத்துக்களின் வரம்பைக் குறிப்பிடும் திறன்.

இதன் பொருள், ஒரு பெரிய எழுத்தில் தொடங்கும் ஒவ்வொரு வரியையும் நீங்கள் கண்டுபிடிக்க வேண்டும் என்றால், நீங்கள் பின்வரும் வடிவத்தைப் பயன்படுத்தலாம்:

grep "^" GPL-3
எங்களின் பெரும்பாலான மென்பொருட்களுக்கான குனு பொது பொது உரிமம்; இதுவும் பொருந்தும்

உரிமம். ஒவ்வொரு உரிமதாரரும் "நீங்கள்" என்று அழைக்கப்படுவார்கள். "உரிமங்கள்" மற்றும்


கணினி நூலகங்கள், அல்லது பொது நோக்கத்திற்கான கருவிகள் அல்லது பொதுவாக இலவசமாகக் கிடைக்கும்
ஆதாரம்.

...
...

சில உள்ளார்ந்த ஒருங்கிணைப்பு சிக்கல்கள் காரணமாக, மிகவும் துல்லியமான முடிவுகளுக்கு மேலே உள்ள எடுத்துக்காட்டில் பயன்படுத்தப்படும் எழுத்து வரம்பிற்குப் பதிலாக POSIX எழுத்து வகுப்புகளைப் பயன்படுத்துவது நல்லது.
இந்த கையேட்டில் உள்ளடக்கப்படாத பல எழுத்து வகுப்புகள் உள்ளன; எடுத்துக்காட்டாக, மேலே உள்ள எடுத்துக்காட்டில் உள்ள அதே நடைமுறையைச் செய்ய, அடைப்புக்குறிக்குள் "[:upper:]" எழுத்து வகுப்பைப் பயன்படுத்தலாம்.

grep "^[[:upper:]]" GPL-3
எங்களின் பெரும்பாலான மென்பொருட்களுக்கான குனு பொது பொது உரிமம்; இதுவும் பொருந்தும்
காப்புரிமைகள் வளர்ச்சி மற்றும் பயன்பாட்டை கட்டுப்படுத்த மாநிலங்கள் அனுமதிக்கக்கூடாது
உரிமம். ஒவ்வொரு உரிமதாரரும் "நீங்கள்" என்று அழைக்கப்படுவார்கள். "உரிமங்கள்" மற்றும்
கூறு, மற்றும் (b) அதனுடன் வேலையைப் பயன்படுத்துவதற்கு மட்டுமே உதவுகிறது
முக்கிய கூறு, அல்லது ஒரு நிலையான இடைமுகத்தை செயல்படுத்த ஒரு
கணினி நூலகங்கள், அல்லது பொது நோக்கத்திற்கான கருவிகள் அல்லது பொதுவாக இலவசமாகக் கிடைக்கும்
ஆதாரம்.
பயனர் தயாரிப்பு பெறுநருக்கு நிரந்தரமாக அல்லது ஒரு
...
...

மாதிரியை மீண்டும் செய்யவும் (0 அல்லது அதற்கு மேற்பட்ட முறை)

பொதுவாகப் பயன்படுத்தப்படும் மெட்டாக்ராக்டர்களில் ஒன்று "*" சின்னமாகும், அதாவது "முந்தைய எழுத்து அல்லது வெளிப்பாட்டை 0 அல்லது அதற்கு மேற்பட்ட முறை மீண்டும் செய்யவும்."

எடுத்துக்காட்டாக, ஒவ்வொரு வரியையும் திறக்கும் அல்லது மூடும் அடைப்புக்குறிக்குள் எழுத்துக்கள் மற்றும் அவற்றுக்கிடையே ஒற்றை இடைவெளிகளைக் கொண்டதாகக் கண்டறிய விரும்பினால், பின்வரும் வெளிப்பாட்டைப் பயன்படுத்தலாம்:

grep "(*)" GPL-3

விநியோகம் (மாற்றத்துடன் அல்லது இல்லாமல்), க்கு கிடைக்கும்
ஒட்டுமொத்த வேலையை விட, அது (அ) சாதாரண வடிவத்தில் சேர்க்கப்பட்டுள்ளது
கூறு, மற்றும் (b) அதனுடன் வேலையைப் பயன்படுத்துவதற்கு மட்டுமே உதவுகிறது
(ஏதேனும் இருந்தால்) இயங்கக்கூடிய வேலை இயங்கும், அல்லது ஒரு கம்பைலர்
(உடல் விநியோக ஊடகம் உட்பட), உடன்
(உடல் விநியோக ஊடகம் உட்பட), உடன் ஏ
இடம் (இலவசமாக அல்லது கட்டணத்திற்கு), மற்றும் அதற்கு சமமான அணுகலை வழங்கவும்
...
...

மெட்டாக்ராக்டர்களை எவ்வாறு தவிர்ப்பது

சில நேரங்களில் நீங்கள் ஒரு நேரடியான காலகட்டத்தை அல்லது ஒரு நேரடியான திறந்த அடைப்புக்குறிக்குள் பார்க்க வேண்டியிருக்கலாம். வழக்கமான வெளிப்பாடுகளில் இந்த எழுத்துக்கள் ஒரு குறிப்பிட்ட பொருளைக் கொண்டிருப்பதால், இந்த விஷயத்தில் அவற்றின் சிறப்பு அர்த்தம் தேவையில்லை என்று grep க்கு சொல்லி "எஸ்கேப்" செய்ய வேண்டும்.

பொதுவாக சிறப்புப் பொருளைக் கொண்ட எழுத்துக்கு முன் பின்சாய்வு (\) ஐப் பயன்படுத்துவதன் மூலம் இந்த எழுத்துக்களைத் தவிர்க்கலாம்.

எடுத்துக்காட்டாக, ஒரு பெரிய எழுத்தில் தொடங்கி ஒரு காலத்துடன் முடிவடையும் சரத்தை நீங்கள் கண்டுபிடிக்க வேண்டும் என்றால், கீழே உள்ள வெளிப்பாட்டைப் பயன்படுத்தலாம். கடைசி புள்ளிக்கு முன் உள்ள பின்சாய்வு அதை "எஸ்கேப்" செய்யும் கட்டளையை சொல்கிறது, இதனால் கடைசி புள்ளி ஒரு நேரடி புள்ளியை குறிக்கிறது மற்றும் "எந்த எழுத்தும்" அர்த்தம் இல்லை:

grep "^.*\.$" GPL-3
ஆதாரம்.
ஒன்று அல்லது அதற்கு மேற்பட்ட நிபந்தனைகளில் இருந்து விதிவிலக்குகளை வழங்குவதன் மூலம் உரிமம்.
லைசென்ஸ் என்பது திட்டத்தை தெரிவிப்பதில் இருந்து முற்றிலும் விலகி இருக்க வேண்டும்.
தேவையான அனைத்து சேவை, பழுது அல்லது திருத்தம்.
இத்தகைய சேதங்கள்.
மின்னணு மற்றும் காகித அஞ்சல் மூலம் உங்களை எவ்வாறு தொடர்புகொள்வது என்பது பற்றிய தகவலையும் சேர்க்கவும்.

மேம்பட்ட வழக்கமான வெளிப்பாடுகள்

Grep கட்டளையை -E கொடியைப் பயன்படுத்தி அல்லது grep க்கு பதிலாக egrep கட்டளையை அழைப்பதன் மூலம் நீட்டிக்கப்பட்ட வழக்கமான வெளிப்பாடு மொழியுடன் பயன்படுத்தலாம்.

இந்த கட்டளைகள் "நீட்டிக்கப்பட்ட வழக்கமான வெளிப்பாடுகளின்" திறன்களைத் திறக்கின்றன. நீட்டிக்கப்பட்ட வழக்கமான வெளிப்பாடுகளில் அனைத்து அடிப்படை மெட்டாக்ராக்டர்களும், மேலும் சிக்கலான பொருத்தங்களை வெளிப்படுத்த கூடுதல் மெட்டாக்ராக்டர்களும் அடங்கும்.

குழுவாக்கம்

நீட்டிக்கப்பட்ட வழக்கமான வெளிப்பாடுகள் வழங்கும் எளிய மற்றும் மிகவும் பயனுள்ள அம்சங்களில் ஒன்று, வெளிப்பாடுகளை குழுவாகக் கொண்டு அவற்றை ஒற்றை அலகாகப் பயன்படுத்தும் திறன் ஆகும்.

அடைப்புக்குறிகள் குழு வெளிப்பாடுகளுக்குப் பயன்படுத்தப்படுகின்றன. நீட்டிக்கப்பட்ட வழக்கமான வெளிப்பாடுகளுக்கு வெளியே நீங்கள் அடைப்புக்குறிகளைப் பயன்படுத்த வேண்டும் என்றால், பின்சாய்வுகளைப் பயன்படுத்தி "தப்பிக்க" முடியும்

grep "\(குழுப்படுத்துதல்\)" file.txt
grep -E "(குழுப்படுத்துதல்)" file.txt
egrep "(குழுப்படுத்துதல்)" file.txt

மேலே உள்ள வெளிப்பாடுகள் சமமானவை.

மாற்று

சதுர அடைப்புக்குறிகள் ஒற்றை எழுத்துக்கு வெவ்வேறு சாத்தியமான பொருத்தங்களைக் குறிப்பிடுவது போல, எழுத்துகளின் சரங்கள் அல்லது வெளிப்பாடுகளின் தொகுப்புகளுக்கு மாற்று பொருத்தங்களைக் குறிப்பிட இடைச்செருகல் உங்களை அனுமதிக்கிறது.

செங்குத்து பட்டை சின்னம் “|” மாற்றீட்டைக் குறிக்கப் பயன்படுத்தப்படுகிறது. இரண்டு அல்லது அதற்கு மேற்பட்ட சாத்தியமான விருப்பங்களில் ஒன்று பொருத்தமாக கருதப்பட வேண்டும் என்பதைக் குறிக்க, குழுவாக்கத்தில் மாற்று என்பது பெரும்பாலும் பயன்படுத்தப்படுகிறது.

இந்த எடுத்துக்காட்டில், நீங்கள் "ஜிபிஎல்" அல்லது "பொது பொது உரிமம்" பார்க்க வேண்டும்:

grep -E "(GPL|பொது பொது உரிமம்)" GPL-3
குனு பொது பொது உரிமம் ஒரு இலவச, காப்பிலெஃப்ட் உரிமம்
GNU பொது பொது உரிமம் உங்கள் சுதந்திரத்திற்கு உத்தரவாதம் அளிக்கும் நோக்கம் கொண்டது
எங்களின் பெரும்பாலான மென்பொருட்களுக்கான குனு பொது பொது உரிமம்; இதுவும் பொருந்தும்
விலை. எங்களின் பொதுப் பொது உரிமங்கள் நீங்கள் உறுதிசெய்யும் வகையில் வடிவமைக்கப்பட்டுள்ளன
GNU GPL ஐப் பயன்படுத்தும் டெவலப்பர்கள் உங்கள் உரிமைகளை இரண்டு படிகளில் பாதுகாக்கிறார்கள்:
டெவலப்பர்கள் மற்றும் ஆசிரியர்களின் பாதுகாப்பிற்காக, GPL தெளிவாக விளக்குகிறது
ஆசிரியர்களுக்காக, GPL ஆனது மாற்றியமைக்கப்பட்ட பதிப்புகள் எனக் குறிக்கப்பட வேண்டும்
GPL இன் இந்த பதிப்பை அவர்களுக்கான நடைமுறையை தடைசெய்ய வடிவமைத்துள்ளனர்
...
...

இரண்டு அல்லது அதற்கு மேற்பட்ட விருப்பங்களுக்கு இடையே தேர்வு செய்ய மாற்று பயன்படுத்தப்படலாம்; இதைச் செய்ய, நீங்கள் மீதமுள்ள விருப்பங்களை தேர்வுக் குழுவில் உள்ளிட வேண்டும், ஒவ்வொன்றையும் செங்குத்து பட்டை சின்னம் "|" பயன்படுத்தி பிரிக்கவும்.

அளவுகோல்கள்

நீட்டிக்கப்பட்ட வழக்கமான வெளிப்பாடுகளில், ஒரு எழுத்து எவ்வளவு அடிக்கடி திரும்பத் திரும்ப வருகிறது என்பதைக் குறிக்கும் மெட்டாஎராக்டர்கள் உள்ளன, "*" என்ற மெட்டாஎராக்டர் முந்தைய எழுத்து அல்லது எழுத்துகளின் சரம் 0 அல்லது அதற்கு மேற்பட்ட முறை பொருந்துகிறது என்பதைக் குறிக்கிறது.

ஒரு எழுத்தை 0 அல்லது அதற்கு மேற்பட்ட முறை பொருத்த, நீங்கள் "?" எழுத்தைப் பயன்படுத்தலாம். இது முந்தைய எழுத்து அல்லது எழுத்துக்களின் வரிசையை விருப்பத்திற்குரியதாக மாற்றும்.

இந்த எடுத்துக்காட்டில், விருப்பக் குழுவில் "நகல்" வரிசையைச் செருகுவதன் மூலம், "பதிப்புரிமை" மற்றும் "வலது" பொருத்தங்கள் காட்டப்படும்:

grep -E "(நகல்)?வலது" GPL-3
பதிப்புரிமை (C) 2007 இலவச மென்பொருள் அறக்கட்டளை, Inc.
உங்கள் உரிமைகளைப் பாதுகாக்க, மற்றவர்கள் உங்களை மறுப்பதை நாங்கள் தடுக்க வேண்டும்
இந்த உரிமைகள் அல்லது உரிமைகளை சரணடையச் சொல்லுங்கள். எனவே, உங்களிடம் உள்ளது
அவர்களின் உரிமைகள் தெரியும்.
GNU GPL ஐப் பயன்படுத்தும் டெவலப்பர்கள் உங்கள் உரிமைகளை இரண்டு படிகளில் பாதுகாக்கிறார்கள்:
(1) மென்பொருளின் பதிப்புரிமையை உறுதிப்படுத்தவும், (2) இந்த உரிமத்தை உங்களுக்கு வழங்கவும்
"பதிப்புரிமை" என்பது மற்ற வகைகளுக்குப் பொருந்தும் பதிப்புரிமை போன்ற சட்டங்களையும் குறிக்கிறது
...
...

"+" எழுத்து 1 அல்லது அதற்கு மேற்பட்ட முறை வெளிப்பாடுகளுடன் பொருந்துகிறது. இது ஏறக்குறைய "*" சின்னத்தைப் போலவே செயல்படுகிறது, ஆனால் "+" ஐப் பயன்படுத்தும் போது வெளிப்பாடு குறைந்தது 1 முறையாவது பொருந்த வேண்டும்.

பின்வரும் வெளிப்பாடு சரம் "இலவசம்" மற்றும் இடைவெளி இல்லாத 1 அல்லது அதற்கு மேற்பட்ட எழுத்துகளுடன் பொருந்துகிறது:

grep -E "இலவசம்[^[:space:]]+" GPL-3
குனு பொது பொது உரிமம் ஒரு இலவச, காப்பிலெஃப்ட் உரிமம்
படைப்புகளைப் பகிரவும் மாற்றவும் உங்களின் சுதந்திரத்தைப் பறிக்க. முரணாக,
GNU பொது பொது உரிமம் உங்கள் சுதந்திரத்திற்கு உத்தரவாதம் அளிக்கும் நோக்கம் கொண்டது
கட்டற்ற மென்பொருளைப் பற்றி பேசும்போது, ​​நாம் சுதந்திரத்தை குறிப்பிடுகிறோம், இல்லை
இலவச மென்பொருளின் நகல்களை விநியோகிக்க சுதந்திரம் உள்ளது (மற்றும் கட்டணம்

நீங்கள் பெற்ற சுதந்திரங்கள். அவர்களும் பெறுவதை உறுதி செய்ய வேண்டும்
பயனர்களைப் பாதுகாத்தல்" மென்பொருளை மாற்றுவதற்கான சுதந்திரம். முறையானது
GPL இன், பயனர்களின் சுதந்திரத்தைப் பாதுகாக்கத் தேவையானது.
நிரலை இலவசமாக வழங்க காப்புரிமையைப் பயன்படுத்த முடியாது.

மீண்டும் மீண்டும் போட்டிகளின் எண்ணிக்கை

எத்தனை முறை பொருத்தங்கள் மீண்டும் மீண்டும் செய்யப்பட வேண்டும் என்பதை நீங்கள் குறிப்பிட வேண்டும் என்றால், நீங்கள் சுருள் பிரேஸ்களைப் பயன்படுத்தலாம் (“( )”). ஒரு வெளிப்பாட்டின் பொருத்தங்களின் எண்ணிக்கையின் சரியான எண், வரம்பு மற்றும் மேல் மற்றும் கீழ் வரம்புகளைக் குறிக்க இந்த குறியீடுகள் பயன்படுத்தப்படுகின்றன.

மூன்று உயிரெழுத்துக்களின் கலவையைக் கொண்ட அனைத்து வரிகளையும் நீங்கள் கண்டுபிடிக்க வேண்டும் என்றால், பின்வரும் வெளிப்பாட்டைப் பயன்படுத்தலாம்:

grep -E "(3)" GPL-3
மாற்றப்பட்டது, அதனால் அவர்களின் பிரச்சனைகள் தவறாகக் கூறப்படாது
முந்தைய பதிப்புகளின் ஆசிரியர்கள்.
எந்த ஊடகத்திலும், நீங்கள் வெளிப்படையாகவும், அதைப் பெறவும்
முந்தைய பத்தியின் கீழ் கொடுக்கவும், மேலும் உடைமை உரிமை
இதன் கீழ் உங்கள் கடமைகளை ஒரே நேரத்தில் பூர்த்தி செய்யும் வகையில் மூடப்பட்ட வேலை
16-20 எழுத்துக்களைக் கொண்ட அனைத்து சொற்களையும் நீங்கள் கண்டுபிடிக்க வேண்டும் என்றால், பின்வரும் வெளிப்பாட்டைப் பயன்படுத்தவும்:
grep -E "[[:alpha:]](16,20)" GPL-3
நீங்கள் மென்பொருளின் நகல்களை விநியோகித்தால் அல்லது இருந்தால் சில பொறுப்புகள்
நீங்கள் அதை மாற்றியமைக்கிறீர்கள்: மற்றவர்களின் சுதந்திரத்தை மதிக்க வேண்டிய பொறுப்புகள்.
c) அந்தப் பொருளின் தோற்றத்தை தவறாகக் குறிப்பிடுவதைத் தடை செய்தல், அல்லது

முடிவுரை

பல சந்தர்ப்பங்களில், கோப்புகளுக்குள் அல்லது படிநிலையில் வடிவங்களைக் கண்டறிய grep கட்டளை பயனுள்ளதாக இருக்கும் கோப்பு முறை. இது நிறைய நேரத்தை மிச்சப்படுத்துகிறது, எனவே அதன் அளவுருக்கள் மற்றும் தொடரியல் மூலம் உங்களைப் பழக்கப்படுத்துவது மதிப்பு.

வழக்கமான வெளிப்பாடுகள் இன்னும் பல்துறை மற்றும் பல பிரபலமான நிரல்களில் பயன்படுத்தப்படலாம். உதாரணமாக, பல உரை ஆசிரியர்கள்உரையைத் தேட மற்றும் மாற்றுவதற்கு வழக்கமான வெளிப்பாடுகளைப் பயன்படுத்தவும்.

மேலும், மேம்பட்ட நிரலாக்க மொழிகள் குறிப்பிட்ட தரவுத் துண்டுகளில் நடைமுறைகளைச் செயல்படுத்த வழக்கமான வெளிப்பாடுகளைப் பயன்படுத்துகின்றன. பொதுவான கணினி தொடர்பான சிக்கல்களைத் தீர்க்கும் போது வழக்கமான வெளிப்பாடுகளுடன் எவ்வாறு வேலை செய்வது என்பதை அறிவது பயனுள்ளதாக இருக்கும்.

குறிச்சொற்கள்: ,

நல்ல மதியம், விருந்தினர்கள்!

இன்றைய கட்டுரையில் நான் ஒரு பெரிய தலைப்பைத் தொட விரும்புகிறேன் வழக்கமான வெளிப்பாடுகள். ரெஜெக்ஸின் தலைப்பு (வழக்கமான வெளிப்பாடுகள் ஸ்லாங்கில் அழைக்கப்படுகிறது) ஒரு இடுகையின் நோக்கத்தில் பரந்த அளவில் உள்ளது என்று அனைவருக்கும் தெரியும் என்று நினைக்கிறேன். எனவே, நான் சுருக்கமாக முயற்சிப்பேன், ஆனால் முடிந்தவரை தெளிவாக, எனது எண்ணங்களைச் சேகரித்து அவற்றை உங்களுக்கு இல் தெரிவிக்கிறேன்.

பல வகையான வழக்கமான வெளிப்பாடுகள் உள்ளன என்று சொல்லி ஆரம்பிக்கிறேன்:

1. வழக்கமான வழக்கமான வெளிப்பாடுகள்(அவை அடிப்படை, அடிப்படை மற்றும் அடிப்படை வழக்கமான வெளிப்பாடுகள்(BRE))

  • இந்த வெளிப்பாடுகளின் தொடரியல் வழக்கற்றுப் போனதாக வரையறுக்கப்பட்டுள்ளது, இருப்பினும் இன்னும் பரவலாக உள்ளது மற்றும் பல UNIX பயன்பாடுகளால் பயன்படுத்தப்படுகிறது.
  • அடிப்படை வழக்கமான வெளிப்பாடுகளில் பின்வரும் மெட்டாக்ராக்டர்கள் அடங்கும் (கீழே உள்ள அவற்றின் அர்த்தங்களில் மேலும்):
    • \( \) - ( ) க்கான ஆரம்ப பதிப்பு (நீட்டிக்கப்பட்ட நிலையில்)
    • \(\) - () க்கான ஆரம்ப பதிப்பு (நீட்டிக்கப்பட்ட நிலையில்)
    • \n, எங்கே n- 1 முதல் 9 வரையிலான எண்
  • இந்த மெட்டாக்ராக்டர்களைப் பயன்படுத்துவதற்கான அம்சங்கள்:
    • ஒரு நட்சத்திரம் ஒற்றை எழுத்துக்கு ஒத்த வெளிப்பாட்டைப் பின்பற்ற வேண்டும். உதாரணமாக: *.
    • வெளிப்பாடு \( தொகுதி\)* தவறானதாகக் கருதப்பட வேண்டும். சில சந்தர்ப்பங்களில் இது சரத்தின் பூஜ்ஜியம் அல்லது அதற்கு மேற்பட்ட மறுமுறைகளுடன் பொருந்துகிறது தொகுதி. மற்றவற்றில் இது சரத்திற்கு ஒத்திருக்கிறது தொகுதி* .
    • ஒரு எழுத்து வகுப்பிற்குள், சிறப்பு எழுத்து அர்த்தங்கள் பெரும்பாலும் புறக்கணிக்கப்படுகின்றன. சிறப்பு வழக்குகள்:
    • ஒரு தொகுப்பில் ^ எழுத்தைச் சேர்க்க, அதை முதலில் அங்கு வைக்கக்கூடாது.
    • ஒரு தொகுப்பில் ஒரு - எழுத்தைச் சேர்க்க, அது முதலில் அல்லது கடைசியாக வைக்கப்பட வேண்டும். உதாரணத்திற்கு:
      • DNS பெயர் டெம்ப்ளேட், இதில் எழுத்துக்கள், எண்கள், கழித்தல் மற்றும் ஒரு புள்ளி ஆகியவை அடங்கும்: [-0-9a-zA-Z.] ;
      • மைனஸ் மற்றும் எண்களைத் தவிர எந்த எழுத்தும்: [^-0-9] .
    • ஒரு தொகுப்பில் [அல்லது] எழுத்தைச் சேர்க்க, அதை முதலில் அங்கு வைக்க வேண்டும். உதாரணத்திற்கு:
      • போட்டிகள் ], [, a அல்லது b.

2. மேம்பட்ட வழக்கமான வெளிப்பாடுகள்(அவர்கள் நீட்டிக்கப்பட்ட வழக்கமான வெளிப்பாடுகள்(ERE))

  • இந்த வெளிப்பாடுகளின் தொடரியல் முக்கிய வெளிப்பாடுகளின் தொடரியல் போன்றது, தவிர:
    • ( ) மற்றும் () மெட்டாக்ராக்டர்களுக்கான பின்சாய்வுகளின் பயன்பாடு நீக்கப்பட்டது.
    • ஒரு மெட்டாகேரக்டர் அதன் சிறப்பு அர்த்தத்தை மீறுவதற்கு முன் ஒரு பின்சாய்வு.
    • கோட்பாட்டளவில் நிராகரிக்கப்பட்டது ஒழுங்கற்றவடிவமைப்பு n .
    • மெட்டாக்ராக்டர்கள் +, ? , | .

3. பெர்லுடன் இணக்கமான வழக்கமான வெளிப்பாடுகள்(அவர்கள் பெர்ல்-இணக்கமான வழக்கமான வெளிப்பாடுகள்(PCRE))

  • POSIX ERE ஐ விட பணக்கார மற்றும் அதே நேரத்தில் யூகிக்கக்கூடிய தொடரியல் உள்ளது, எனவே அவை பெரும்பாலும் பயன்பாடுகளால் பயன்படுத்தப்படுகின்றன.

வழக்கமான வெளிப்பாடுகள் கொண்டுள்ளதுவார்ப்புருக்கள், அல்லது மாறாக ஒரு டெம்ப்ளேட்டை அமைக்கவும்தேடல். டெம்ப்ளேட் கொண்டுள்ளதுஇருந்து விதிகள்தேடல்கள், உருவாக்கப்படுகின்றன பாத்திரங்கள்மற்றும் மெட்டா பாத்திரங்கள்.

தேடல் விதிகள்பின்வருவனவற்றால் தீர்மானிக்கப்படுகின்றன செயல்பாடுகள்:

கணக்கீடு |

குழாய் (|)செல்லுபடியாகும் விருப்பங்களைப் பிரிக்கிறது, ஒருவர் சொல்லலாம் - தருக்க அல்லது. எடுத்துக்காட்டாக, "சாம்பல்|சாம்பல்" பொருத்தங்கள் சாம்பல்அல்லது சாம்பல்.

குழு அல்லது ஒன்றியம்()

வட்ட அடைப்புக்குறிகள்ஆபரேட்டர்களின் நோக்கம் மற்றும் முன்னுரிமையை வரையறுக்கப் பயன்படுகிறது. எடுத்துக்காட்டாக, "சாம்பல்|சாம்பல்" மற்றும் "gr(a|e)y" ஆகியவை வெவ்வேறு வடிவங்கள், ஆனால் அவை இரண்டும் அடங்கிய தொகுப்பை விவரிக்கின்றன. சாம்பல்மற்றும் சாம்பல்.

அளவிடு()? * +

குவாண்டிஃபையர்ஒரு பாத்திரம் அல்லது குழு எத்தனை முறை தீர்மானிக்கிறது முன்னோடிவெளிப்பாடு ஏற்படலாம்.

பொது வெளிப்பாடு, மீண்டும் மீண்டும் இருக்கலாம் மீ முதல் n வரை.

பொது வெளிப்பாடு மீ அல்லது அதற்கு மேற்பட்ட மறுபடியும்.

பொது வெளிப்பாடு n மீண்டும் மீண்டும் இல்லை.

மென்மையானn மறுபடியும்.

கேள்வி குறிஅர்த்தம் 0 அல்லது 1முறை, அதே போல் {0,1} . எடுத்துக்காட்டாக, "colou?r" பொருத்தங்கள் மற்றும் நிறம், மற்றும் நிறம்.

நட்சத்திரம்அர்த்தம் 0, 1 அல்லது ஏதேனும் எண்ஒருமுறை ( {0,} ) எடுத்துக்காட்டாக, "go*gle" போட்டிகள் கிண்டல், கூகிள், கூகிள்மற்றும் பல.

மேலும்அர்த்தம் குறைந்தது 1ஒருமுறை ( {1,} ) எடுத்துக்காட்டாக, "go+gle" பொருத்தங்கள் கூகிள், கூகிள்முதலியன (ஆனால் இல்லை கிண்டல்).

இந்த வழக்கமான வெளிப்பாடுகளின் சரியான தொடரியல் செயல்படுத்தல் சார்ந்தது. (அதாவது, இல் அடிப்படை வழக்கமான வெளிப்பாடுகள்சின்னங்கள் (மற்றும்)- பின்னோக்கித் தப்பினார்)

மெட்டா பாத்திரங்கள், எளிமையான சொற்களில், அவற்றின் உண்மையான அர்த்தத்துடன் பொருந்தாத சின்னங்கள், அதாவது ஒரு சின்னம். (புள்ளி) என்பது ஒரு புள்ளி அல்ல, ஆனால் ஏதேனும் ஒரு எழுத்து போன்றவை. மெட்டாக்ராக்டர்கள் மற்றும் அவற்றின் அர்த்தங்களைத் தெரிந்துகொள்ளவும்:

. பொருந்துகிறது தனியாகஎந்த சின்னம்
[ஏதாவது] இணக்கமான எந்த ஒற்றைஅடைப்புக்குறிக்குள் இணைக்கப்பட்டவர்களிடமிருந்து எழுத்து. இந்த வழக்கில்: "-" எழுத்து என்பது ஒரு திறப்புக்குப் பிறகு அல்லது மூடும் அடைப்புக்குறிக்கு முன் உடனடியாக அமைந்திருந்தால் மட்டுமே விளக்கப்படும்: அல்லது [-abc]. இல்லையெனில், இது ஒரு எழுத்து இடைவெளியைக் குறிக்கிறது. எடுத்துக்காட்டாக, "a", "b" அல்லது "c" உடன் பொருந்துகிறது. லத்தீன் எழுத்துக்களின் சிறிய எழுத்துக்களுக்கு ஒத்திருக்கிறது. இந்த பெயர்களை இணைக்கலாம்: a, b, c, q, r, s, t, u, v, w, x, y, z. ஆகிய எழுத்துகளை பொருத்துவதற்கு, "[" அல்லது "]", இது போதுமானது மூடும் அடைப்புக்குறி என்பது தொடக்க எழுத்துக்குப் பின் வரும் முதல் எழுத்து: "]", "[", "a" அல்லது "b" பொருந்துகிறது. சதுர அடைப்புக்குறிக்குள் உள்ள மதிப்பு ^ எழுத்துக்கு முன் இருந்தால், வெளிப்பாட்டின் மதிப்பு பொருந்தும் ஒற்றை பாத்திரம்அவர்கள் மத்தியில் இருந்து அடைப்புக்குறிக்குள் இல்லாதவை. எடுத்துக்காட்டாக, [^abc] "a", "b" அல்லது "c" தவிர வேறு எந்த எழுத்துக்கும் பொருந்தும். [^a-z] லத்தீன் எழுத்துக்களில் உள்ள சிற்றெழுத்துக்களைத் தவிர எந்த எழுத்துக்கும் பொருந்தும்.
^ உரையின் தொடக்கத்துடன் பொருந்துகிறது (அல்லது பயன்முறை வரிக்கு வரியாக இருந்தால் எந்த வரியின் தொடக்கமும்).
$ உரையின் முடிவைப் பொருத்துகிறது (அல்லது பயன்முறை வரிக்கு வரியாக இருந்தால் எந்த வரியின் முடிவும்).
\(\) அல்லது () பின்னர் பயன்படுத்தக்கூடிய "குறியிடப்பட்ட துணை வெளிப்பாடு" (குழுப்படுத்தப்பட்ட வெளிப்பாடு) அறிவிக்கிறது (பின்வரும் உறுப்பைப் பார்க்கவும்: \ n) "குறியிடப்பட்ட துணை வெளிப்பாடு" என்பது ஒரு "தடுப்பு" ஆகும். மற்ற ஆபரேட்டர்களைப் போலல்லாமல், இதற்கு (பாரம்பரிய தொடரியல்) பின்சாய்வு தேவைப்படுகிறது; நீட்டிக்கப்பட்ட மற்றும் பெர்லில், \ எழுத்து தேவையில்லை.
\n எங்கே n- இது 1 முதல் 9 வரையிலான எண்; பொருந்துகிறது nவது குறிக்கப்பட்ட துணை வெளிப்பாடு (உதாரணமாக (abcd)\0, அதாவது abcd எழுத்துக்கள் பூஜ்ஜியத்தால் குறிக்கப்பட்டுள்ளன). இந்த வடிவமைப்பு கோட்பாட்டளவில் உள்ளது ஒழுங்கற்ற, நீட்டிக்கப்பட்ட வழக்கமான வெளிப்பாடு தொடரியல் ஏற்றுக்கொள்ளப்படவில்லை.
*
  • நட்சத்திரம்ஒரு ஒற்றை எழுத்துடன் பொருந்திய வெளிப்பாடுக்குப் பிறகு, பொருந்துகிறது பூஜ்யம்அல்லது மேலும் பிரதிகள்இந்த (முந்தைய) வெளிப்பாடு. எடுத்துக்காட்டாக, "*" வெற்று சரம், "x", "y", "zx", "zyx" போன்றவற்றுடன் பொருந்துகிறது.
  • \n*, எங்கே n 1 முதல் 9 வரையிலான இலக்கம், பூஜ்ஜியம் அல்லது அதற்கு மேற்பட்ட நிகழ்வுகளுடன் பொருந்துகிறது nவது குறிக்கப்பட்ட துணை வெளிப்பாடு. எடுத்துக்காட்டாக, "\(a.\)c\1*" ஆனது "abcab" மற்றும் "abcaba" உடன் பொருந்துகிறது, ஆனால் "abcac" அல்ல.

"\(" மற்றும் "\)" உடன் "*" உடன் இணைக்கப்பட்ட ஒரு வெளிப்பாடு சட்டவிரோதமாக கருதப்பட வேண்டும். சில சந்தர்ப்பங்களில், அடைப்புக்குறிக்குள் இணைக்கப்பட்ட சரத்தின் பூஜ்ஜியம் அல்லது அதற்கு மேற்பட்ட நிகழ்வுகளுடன் இது பொருந்துகிறது. மற்றவற்றில், இது "*" எழுத்துடன் கொடுக்கப்பட்ட அடைப்புக்குறிக்குள் உள்ள வெளிப்பாட்டுடன் பொருந்துகிறது.

\{எக்ஸ்,ஒய்\} கடைசியுடன் ஒத்துப்போகிறது ( வரவிருக்கும்) குறைந்தபட்சம் நிகழ்கிறது எக்ஸ்மேலும் இல்லை ஒய்ஒருமுறை. எடுத்துக்காட்டாக, "a\(3,5\)" ஆனது "aaa", "aaaa" அல்லது "aaaa" உடன் பொருந்துகிறது. மற்ற ஆபரேட்டர்களைப் போலல்லாமல், இதற்கு (பாரம்பரிய தொடரியல்) பின்சாய்வு தேவைப்படுகிறது.
.* ஒரு வழக்கமான வெளிப்பாட்டின் இரண்டு பகுதிகளுக்கு இடையில் எந்த எழுத்துகளின் எண்ணிக்கையையும் குறிப்பிடுதல்.

பல்வேறு பொருத்தங்களைப் பயன்படுத்த மெட்டாக்ராக்டர்கள் நமக்கு உதவுகின்றன. ஆனால் ஒரு மெட்டாக்ராக்டரை ஒரு வழக்கமான எழுத்தாக, அதாவது சதுர அடைப்புக்குறியின் அர்த்தத்துடன் குறியீட்டை எவ்வாறு பிரதிநிதித்துவப்படுத்துவது? வெறும்:

  • முன்னதாக இருக்க வேண்டும் ( கவசம்) மெட்டாக்ராக்டர் (. * + \ ? ( )) பின்சாய்வு. உதாரணத்திற்கு \. அல்லது \[

சில எழுத்துத் தொகுப்புகளின் வரையறையை எளிமைப்படுத்த, அவை அழைக்கப்படுபவையாக இணைக்கப்பட்டன. வகுப்புகள் மற்றும் பாத்திரங்களின் வகைகள். பின்வரும் அட்டவணையில் காட்டப்பட்டுள்ளபடி, குறிப்பிட்ட எழுத்து வகுப்புகள் மற்றும் வகைகளின் அறிவிப்பை POSIX தரப்படுத்தியுள்ளது:

POSIX வகுப்பு இதேபோல் பதவி
[:மேல்:] பெரிய எழுத்துகள்
[:கீழ்:] சிறிய எழுத்துக்கள்
[: ஆல்பா:] பெரிய மற்றும் சிறிய எழுத்துக்கள்
[:ஆல்னம்:] எண்கள், பெரிய மற்றும் சிறிய எழுத்துக்கள்
[: இலக்கம்:] எண்கள்
[:xdigit:] ஹெக்ஸாடெசிமல் இலக்கங்கள்
[: punct:] [.,!?:…] நிறுத்தற்குறிகள்
[:வெற்று:] [\t] இடம் மற்றும் TAB
[:வெளி:] [\t\n\r\f\v] எழுத்துக்களைத் தவிர்க்கவும்
[:cntrl:] கட்டுப்பாட்டு எழுத்துக்கள்
[: வரைபடம்:] [^\t\n\r\f\v] முத்திரை சின்னங்கள்
[:print:] [^\t\n\r\f\v] முத்திரை சின்னங்கள் மற்றும் சின்னங்களை தவிர்க்கவும்

ரெஜெக்ஸில் இது போன்ற ஒரு விஷயம் உள்ளது:

பேராசை ரீஜெக்ஸ்

முடிந்தவரை தெளிவாக விவரிக்க முயற்சிப்பேன். எல்லாவற்றையும் கண்டுபிடிக்க வேண்டும் என்று சொல்லலாம் HTML குறிச்சொற்கள்சில உரையில். சிக்கலை உள்ளூர்மயமாக்கிய பிறகு, இடையில் உள்ள மதிப்புகளைக் கண்டறிய விரும்புகிறோம்< и >, இதே அடைப்புக்குறிகளுடன். ஆனால் குறிச்சொற்கள் வெவ்வேறு நீளங்களைக் கொண்டிருக்கின்றன, குறைந்தது 50 குறிச்சொற்கள் உள்ளன என்பதை நாங்கள் அறிவோம், அவை அனைத்தையும் பட்டியலிடுவது, அவற்றை மெட்டாசிம்பல்களில் இணைப்பது, மிகவும் நேரத்தை எடுத்துக்கொள்ளும் பணியாகும். ஆனால் எங்களிடம் ஒரு வெளிப்பாடு உள்ளது என்பதை நாங்கள் அறிவோம்.* (புள்ளி நட்சத்திரம்), இது வரியில் உள்ள எந்த எழுத்துக்களையும் வகைப்படுத்துகிறது. பயன்படுத்தி கொடுக்கப்பட்ட வெளிப்பாடுஉரையில் கண்டுபிடிக்க முயற்சிப்போம் (

அதனால், எப்படி உருவாக்குவது RAID நிலை LSI MegaRAID கட்டுப்படுத்தியில் 10/50 (இதற்கும் பொருத்தமானது: Intel SRCU42x, Intel SRCS16):

) இடையே உள்ள அனைத்து மதிப்புகளும்< и >. இதன் விளைவாக, முழு வரியும் இந்த வெளிப்பாட்டுடன் பொருந்தும். ஏன், ஏனெனில் regex என்பது பேராசை மற்றும் இடையில் உள்ள அனைத்து எழுத்துக்களையும் பிடிக்க முயற்சிக்கிறது< и >, முறையே முழு வரி, தொடங்கி < ப>எனவே...மற்றும் முடிவடைகிறது ...> இந்த விதிக்கு சொந்தமானது!

பேராசை என்றால் என்ன என்பதை இந்த உதாரணம் தெளிவாக்குகிறது என்று நம்புகிறேன். இந்த பேராசையிலிருந்து விடுபட, நீங்கள் பின்வரும் வழியைப் பின்பற்றலாம்:

  • சின்னங்களை கணக்கில் எடுத்துக் கொள்ளுங்கள் இல்லைவிரும்பிய வடிவத்துடன் தொடர்புடையது (எடுத்துக்காட்டாக:<[^>]*> மேற்கண்ட வழக்குக்கு)
  • பேராசையற்றது என அளவுகோலின் வரையறையைச் சேர்ப்பதன் மூலம் பேராசையிலிருந்து விடுபடுங்கள்:
    • *? - "பேராசை இல்லை" ("சோம்பேறி") சமமான *
    • +? - "பேராசை இல்லை" ("சோம்பேறி") சமமான +
    • (n,)? - “பேராசை இல்லை” (“சோம்பேறி”) சமமான (n,)
    • .*? - "பேராசை இல்லை" ("சோம்பேறி") சமமானது.*

மேலே உள்ள அனைத்தையும் நான் சேர்க்க விரும்புகிறேன் நீட்டிக்கப்பட்ட வழக்கமான வெளிப்பாடு தொடரியல்:

POSIX இல் உள்ள வழக்கமான வெளிப்பாடுகள் பாரம்பரிய யூனிக்ஸ் தொடரியல் போலவே இருக்கும், ஆனால் சில மெட்டாக்ராக்டர்கள் கூடுதலாக உள்ளன:

மேலும்என்று குறிப்பிடுகிறது முந்தையசின்னம் அல்லது குழுமீண்டும் மீண்டும் செய்யப்படலாம் ஒன்று அல்லது அதற்கு மேற்பட்ட முறை. நட்சத்திரக் குறியைப் போலன்றி, குறைந்தபட்சம் ஒரு முறையாவது செய்ய வேண்டும்.

கேள்வி குறிசெய்யும் முந்தையசின்னம் அல்லது குழு விருப்பமானது. வேறு வார்த்தைகளில் கூறுவதானால், தொடர்புடைய வரியில் அது இல்லாத அல்லது தற்போது இருக்கலாம்மென்மையான ஒன்றுஒருமுறை.

செங்குத்து பட்டைபிரிக்கிறது மாற்று விருப்பங்கள்வழக்கமான வெளிப்பாடுகள். ஒரு எழுத்து இரண்டு மாற்றுகளைக் குறிப்பிடுகிறது, ஆனால் அவற்றில் அதிகமானவை இருக்கலாம், அதிக செங்குத்து பார்களைப் பயன்படுத்தவும். இந்த ஆபரேட்டர் முடிந்தவரை வெளிப்பாட்டைப் பயன்படுத்துகிறார் என்பதை நினைவில் கொள்வது அவசியம். இந்த காரணத்திற்காக, மாற்று ஆபரேட்டர் பெரும்பாலும் அடைப்புக்குறிக்குள் பயன்படுத்தப்படுகிறது.

பின்சாய்வுகளின் பயன்பாடும் ஒழிக்கப்பட்டது: \(...\) ஆனது (...) மற்றும் \(...\) ஆனது (...)

இடுகையை முடிக்க, regex ஐப் பயன்படுத்துவதற்கான சில எடுத்துக்காட்டுகளைத் தருகிறேன்:

$ பூனை உரை1 1 ஆப்பிள் 2 பேரிக்காய் 3 வாழைப்பழம் $ grep p உரை1 1 ஆப்பிள் 2 பேரிக்காய் $ grep "pp*" text1 1 ஆப்பிள் 2 பேரிக்காய் $ பூனை உரை1 | grep "l\|n" 1 apple 3 banana $ echo -e "find an\n* here" | grep "\*" * இங்கே $ grep "pl\?.*r" text1 # p, r 2 pear உள்ள வரிகளில் $ grep "a.." text1 # வரிகள், அதைத் தொடர்ந்து குறைந்தது 2 எழுத்துகள் 1 apple 3 banana $ grep "" text1 # 3 அல்லது p 1 apple 2 pear 3 banana $ echo -e "இங்கே\n* எங்காவது கண்டுபிடி." | grep "[.*]" * இங்கே எங்கோ..பெயர்]$ echo -e "123\n456\n789\n0" | grep "" 123,456,789 $ sed -e "/\(a.*a\)\|\(p.*p\)/s/a/A/g" text1 # a க்கு பிறகு A வரும் எல்லா வரிகளிலும் A உடன் மாற்றவும் a அல்லது pக்குப் பிறகு p 1 Apple 2 pear 3 bANA *\./ LAST WORD./g" முதலில். ஒரு கடைசி வார்த்தை. இது ஒரு கடைசி வார்த்தை.

வாழ்த்துகள், McSim!

grep என்பது 'குளோபல் ரெகுலர் எக்ஸ்பிரஷன் பிரிண்டர்' என்பதைக் குறிக்கிறது. grep உங்களுக்கு தேவையான வரிகளை வெட்டுகிறது உரை கோப்புகள்பயனர் குறிப்பிட்ட உரையை கொண்டிருக்கும்.

grep இரண்டு வழிகளில் பயன்படுத்தப்படலாம் - சொந்தமாக அல்லது ஸ்ட்ரீம்களுடன் இணைந்து.

grep ஆதரிக்கும் அதிக எண்ணிக்கையிலான விருப்பங்களின் காரணமாக செயல்பாட்டில் மிகவும் விரிவானது, அதாவது: சரம் வடிவத்தைப் பயன்படுத்தி தேடுதல் அல்லது RegExp வழக்கமான வெளிப்பாடு முறை அல்லது perl அடிப்படையிலான வழக்கமான வெளிப்பாடுகள் போன்றவை.

அதன் வித்தியாசம் காரணமாக செயல்பாடு grep கருவி உட்பட பல விருப்பங்கள் உள்ளன egrep (விரிவாக்கப்பட்ட GREP), fgrep (நிலையான GREP), pgrep (செயல்முறை GREP), rgrep (சுழற்சி GREP)முதலியன ஆனால் இந்த விருப்பங்கள் அசல் grep இலிருந்து சிறிய வேறுபாடுகளைக் கொண்டுள்ளன.

grep விருப்பங்கள்

$ grep -V grep (GNU grep) 2.10 பதிப்புரிமை (C) 2011 இலவச மென்பொருள் அறக்கட்டளை, Inc. உரிமம் GPLv3+

grep பயன்பாட்டில் மாற்றங்கள் உள்ளன: egrep (நீட்டிக்கப்பட்ட வழக்கமான வெளிப்பாடு செயலாக்கத்துடன்), fgrep (இது $*^|()\ குறியீடுகளை எழுத்துக்களாகக் கருதுகிறது, அதாவது உண்மையில்), rgrep (சுழற்சி தேடல் இயக்கத்துடன்).

    egrep என்பது grep -E போன்றது

    fgrep என்பது grep -F போலவே இருக்கும்

    rgrep என்பது grep -r போன்றது

    grep [-b] [-c] [-i] [-l] [-n] [-s] [-v] restricted_regex_BRE [கோப்பு...]

grep கட்டளையானது லிமிடெட்_regex ஆல் குறிப்பிடப்பட்ட வடிவத்திற்கு எதிராக மூல கோப்புகளில் உள்ள வரிகளை பொருத்துகிறது. கோப்புகள் எதுவும் குறிப்பிடப்படவில்லை என்றால், நிலையான உள்ளீடு பயன்படுத்தப்படும். பொதுவாக, வெற்றிகரமாக பொருந்திய ஒவ்வொரு சரமும் நிலையான வெளியீட்டிற்கு நகலெடுக்கப்படும்; பல மூல கோப்புகள் இருந்தால், கோப்பு பெயர் கண்டுபிடிக்கப்பட்ட வரிக்கு முன் கொடுக்கப்படும். grep ஒரு கச்சிதமான, தீர்மானமற்ற வழிமுறையைப் பயன்படுத்துகிறது. கட்டுப்படுத்தப்பட்ட வழக்கமான வெளிப்பாடுகள் (அவற்றின் அர்த்தங்களுடன் எழுத்துக்களின் சரங்களைக் கொண்டிருக்கும் மற்றும் வரையறுக்கப்பட்ட எண்ணெழுத்து மற்றும் சிறப்பு எழுத்துக்களைப் பயன்படுத்தும் வெளிப்பாடுகள்) டெம்ப்ளேட்களாக உணரப்படுகின்றன. பதிப்பில் உள்ள வழக்கமான வெளிப்பாடுகளின் அதே அர்த்தத்தை அவை கொண்டிருக்கின்றன.

ஷெல் விளக்கத்திலிருந்து $, *, , ^, |, (), மற்றும் \ எழுத்துக்களிலிருந்து தப்பிக்க, constrained_regex ஐ ஒற்றை மேற்கோள்களில் இணைப்பது எளிதானது.

விருப்பங்கள்:

B ஒவ்வொரு வரியையும் அது கண்டுபிடிக்கப்பட்ட தொகுதி எண்ணுடன் முன்னுரை செய்கிறது. சூழலின்படி தொகுதிகளைத் தேடும்போது இது பயனுள்ளதாக இருக்கும் (தொகுதிகள் 0 முதல் எண்ணப்படும்). -c வடிவத்தைக் கொண்ட வரிகளின் எண்ணிக்கையை மட்டுமே அச்சிடுகிறது. -h பொருந்திய வரியைக் கொண்ட கோப்பின் பெயரை வரிக்கு முன்பே அச்சிடுவதைத் தடுக்கிறது. பல கோப்புகளில் தேடும் போது பயன்படுத்தப்படுகிறது. - நான் ஒப்பீடு செய்யும் போது வழக்கை புறக்கணிக்கிறேன். -l பொருந்தும் சரங்களைக் கொண்ட கோப்புகளின் பெயர்களை மட்டுமே, ஒரு வரிக்கு ஒன்று அச்சிடுகிறது. ஒரு கோப்பின் பல வரிகளில் ஒரு பேட்டர்ன் காணப்பட்டால், கோப்பின் பெயர் மீண்டும் வராது. -n கோப்பில் ஒவ்வொரு வரிக்கும் முன் அதன் எண்ணை அச்சிடுகிறது (கோடுகள் 1 முதல் எண்ணப்படும்). -s இல்லாத அல்லது படிக்க முடியாத கோப்புகளைப் பற்றிய செய்திகளை அடக்குகிறது. -v ஒரு வடிவத்தைக் கொண்ட வரிகளைத் தவிர அனைத்து வரிகளையும் அச்சிடுகிறது. -w வெளிப்பாட்டை ஒரு வார்த்தையாகத் தேடுகிறது, அது மெட்டாக்ராக்டர்களால் சூழப்பட்டது போல் \< и \>.

grep --உதவி

பயன்பாடு: grep [OPTION]... PATTERN [FILE]... ஒவ்வொரு கோப்பு அல்லது நிலையான உள்ளீட்டிலும் PATTERN ஐத் தேடுகிறது. இயல்பாக, PATTERN என்பது ஒரு எளிய வழக்கமான வெளிப்பாடு (BRE). எடுத்துக்காட்டு: grep -i "hello world" menu.h main.c வழக்கமான வெளிப்பாட்டின் வகை மற்றும் அதன் விளக்கத்தைத் தேர்ந்தெடுப்பது: -E, --extended-regexp PATTERN - நீட்டிக்கப்பட்ட வழக்கமான வெளிப்பாடு (ERE) -F, --fixed-regexp PATTERN - சரங்களின் நிலையான நீளம், ஒரு புதிய வரி எழுத்தால் பிரிக்கப்பட்டது -G, --basic-regexp PATTERN - எளிய வழக்கமான வெளிப்பாடு (BRE) -P, --perl-regexp PATTERN - Perl வழக்கமான வெளிப்பாடுகள் -e, --regexp=PATTERN இதற்கு PATTERN ஐப் பயன்படுத்தவும் search - f, --file=FILE -i இலிருந்து PATTERNஐ எடுக்கவும், --ignore-case නොසලකා හරින්න வழக்கு வித்தியாசம் -w, --word-regexp PATTERN அனைத்து வார்த்தைகளுடன் பொருந்த வேண்டும் -x, --line-regexp PATTERN முழு வரியுடன் பொருந்த வேண்டும் -z, --null-data கோடுகள் ஒரு வரி இறுதி எழுத்துக்கு பதிலாக பூஜ்ய பைட் மூலம் பிரிக்கப்படுகின்றன: -s, --no-messages பிழை செய்திகளை அடக்கும் -v, --revert-match தேர்ந்தெடுக்க பொருந்தாத வரிகளை -V, - - பதிப்பு அச்சிடப்பட்ட பதிப்புத் தகவல் மற்றும் வெளியேறு --உதவியைக் காட்டவும் மற்றும் --mmap க்கான வெளியேறவும் பின்னோக்கிய பொருத்தம், புறக்கணிக்கப்பட்ட வெளியீட்டு கட்டுப்பாடு: -m, --max-count=NUMBER ஸ்டாப் குறிப்பிட்ட NUMBER பொருத்தங்கள் -b, --byte-offset வெளியீட்டு வரிகள் -n உடன் பைட் ஆஃப்செட்டை அச்சிடவும், --line-number வரியை அச்சிடவும் வெளியீட்டு கோடுகளுடன் எண் --லைன்-பஃபர்டு ஒவ்வொரு வரிக்கும் பிறகு இடையகத்தை ஃப்ளஷ் செய்யவும் -H, --filename ஒவ்வொரு போட்டிக்கும் கோப்பு பெயரை அச்சிடவும் -h, --no-filename கோப்பின் பெயருடன் வெளியீட்டைத் தொடங்க வேண்டாம் -- label=LABEL நிலையான உள்ளீடு -o க்கான கோப்பு பெயராக LABEL ஐப் பயன்படுத்தவும், --only-matching ஷோவின் ஒரு பகுதியை மட்டுமே பொருந்தும் PATTERN -q, --quiet, --silent அனைத்து சாதாரண வெளியீட்டையும் அடக்க --binary-files=TYPE அனுமானம் அந்த பைனரி கோப்புஒரு வகை உள்ளது: பைனரி, உரை அல்லது பொருத்தமற்றது. -a, --text அதே --binary-files=text -I அதே --binary-files=without-match -d, --directories=கோப்பகங்களைக் கையாள்வது எப்படி ACTION படிக்கலாம் ), recurse (சுழற்சியாக) அல்லது தவிர்க்கவும் (தவிர்க்கவும்). -D, --devices=செயல்பாடு சாதனங்கள், FIFOக்கள் மற்றும் சாக்கெட்டுகளை எவ்வாறு கையாள்வது என்பதை ACTION படிக்கலாம் அல்லது தவிர்க்கலாம் -R, -r, --recursive --directories=recurse --include=F_PATTERN செயல்முறை F_TEMPLATE இன் கீழ் பொருந்தக்கூடிய கோப்புகள் மட்டும் - -exclude=F_TEMPLATE கோப்புகள் மற்றும் கோப்பகங்களைத் தவிர்க்கவும் பொருத்தங்கள் இல்லாத கோப்பு பெயர்கள் -l, --files-with-mateches உள்ள FILE பெயர்களை மட்டும் அச்சிடவும் -c, --count அச்சிடும் ஒரு FILE -T, --initial-tab align tab (தேவைப்பட்டால்) - Z, --null print byte 0 FILE பெயருக்குப் பிறகு சூழல் மேலாண்மை: -B, --before-context=NUM முந்தைய சூழலின் NUMBER வரிகளை அச்சிடவும் -A, --after-context=NUM இன் வரிகளின் NUMBERஐ அச்சிடவும் அடுத்தடுத்த சூழல் -C, --சூழல்[=NUMBER] சூழல் வரிகளின் NUMBER ஐ அச்சிடவும் -NUMBER என்பது --context=NUMBER --color[=WHEN], --colour[=] பொருத்தத்தை வேறுபடுத்த குறிப்பான்களைப் பயன்படுத்தவும் கோடுகள்; எப்பொழுது எப்பொழுது இருக்க முடியும், ஒருபோதும் அல்லது auto -U, --பைனரி வரியின் முடிவில் உள்ள CR எழுத்துகளை நீக்க வேண்டாம் (MSDOS) -u, --unix-byte-offsets எதுவும் CR-கள் இல்லாதது போல் ஆஃப்செட்டைக் காட்டுகின்றன (MSDOS ) "egrep" க்கு பதிலாக, அது "grep -E" ஐ இயக்க வேண்டும். "fgrep" க்கு பதிலாக "grep -F" கருதப்படுகிறது. "egrep" அல்லது "fgrep" ஆக இயங்காமல் இருப்பது நல்லது. FILE குறிப்பிடப்படாதபோது அல்லது FILE என இருக்கும் போது - நிலையான உள்ளீடு படிக்கப்படும். இரண்டுக்கும் குறைவான கோப்புகள் குறிப்பிடப்பட்டிருந்தால், -h எனக் கருதப்படுகிறது. பொருத்தம் கண்டறியப்பட்டால், வெளியேறும் குறியீடு 0 ஆகவும், இல்லையெனில் 1 ஆகவும் இருக்கும். பிழைகள் ஏற்பட்டால் அல்லது -q விருப்பம் குறிப்பிடப்படவில்லை என்றால், வெளியேறும் குறியீடு 2 ஆக இருக்கும். பிழைகளை இதற்குப் புகாரளிக்கவும்: மொழிபெயர்ப்பில் பிழைகள் இருந்தால் புகாரளிக்கவும்: குனு கிரெப் முகப்புப் பக்கம்: குனு நிரல்களுடன் பணிபுரிவதற்கான உதவி: