பாஷில் பிரேக்கிங் டவுன் ஸ்ட்ரிங் மேனிபுலேஷன்
ஷெல் ஸ்கிரிப்ட்களுடன் பணிபுரியும் போது, ஒரு பொதுவான பணியானது, ஒரு பிரிவின் அடிப்படையில் ஒரு சரத்தை பிரிப்பதாகும். எடுத்துக்காட்டாக, அரைப்புள்ளிகளால் பிரிக்கப்பட்ட மின்னஞ்சல் முகவரிகளைக் கொண்ட ஒரு சரத்தைக் கவனியுங்கள். நீங்கள் ஒவ்வொரு மின்னஞ்சலையும் தனித்தனியாகச் செயல்படுத்த வேண்டும் என்றால், இந்த சரத்தை எவ்வாறு பிரிப்பது என்பதைப் புரிந்துகொள்வது அவசியம். பாஷில் இதை அடைய பல்வேறு முறைகள் மூலம் இந்தக் கட்டுரை உங்களுக்கு வழிகாட்டும்.
`tr` கட்டளையைப் பயன்படுத்துதல் மற்றும் உள் புலப் பிரிப்பானை (IFS) கையாளுதல் போன்ற தீர்வுகளை ஆராய்வோம். முடிவில், நீங்கள் சரம் பிரிப்பதை திறமையாக கையாள முடியும் மற்றும் IFS ஐ அதன் இயல்புநிலை மதிப்பிற்கு மீட்டமைக்க முடியும். உங்கள் பாஷ் ஸ்கிரிப்டிங் பணிகளை எளிதாக்குவோம்!
| கட்டளை | விளக்கம் |
|---|---|
| tr | எழுத்துகளை மொழிபெயர்க்கிறது அல்லது நீக்குகிறது. சரத்தைப் பிரிக்க புதிய வரி எழுத்துடன் அரைப்புள்ளியை மாற்ற இங்கே பயன்படுத்தப்படுகிறது. |
| IFS | இன்டர்னல் ஃபீல்ட் செப்பரேட்டர், பாஷ் ஸ்கிரிப்ட்களில் ஒரு குறிப்பிட்ட டிலிமிட்டரின் அடிப்படையில் சரங்களைப் பிரிக்கப் பயன்படுகிறது. |
| read -r -a | உள்ளீட்டின் ஒரு வரியைப் படித்து, அதை அணிவரிசையாகப் பிரிக்கிறது. -r விருப்பம் பின்சாய்வுகளை எஸ்கேப் கேரக்டர்களாக விளக்குவதைத் தடுக்கிறது. |
| echo | நிலையான வெளியீட்டிற்கு உரையை அச்சிடுகிறது. பிளவு சரம் கூறுகளைக் காட்டப் பயன்படுகிறது. |
| split | ஒரு பெர்ல் செயல்பாடு, ஒரு சரத்தை ஒரு குறிப்பிட்ட டிலிமிட்டரின் அடிப்படையில் சரங்களின் பட்டியலாகப் பிரிக்கிறது. |
| foreach | மதிப்புகளின் பட்டியலின் மீது மீண்டும் செயல்படும் பெர்ல் லூப் அமைப்பு. |
பாஷ் சரம் பிரித்தல் நுட்பங்களைப் புரிந்துகொள்வது
முதல் பாஷ் ஸ்கிரிப்ட் ஒரு சரத்தை எவ்வாறு பிரிப்பது என்பதை விளக்குகிறது tr கட்டளை. இங்கே, நாம் ஒரு சரத்தை வரையறுக்கிறோம் IN="bla@some.com;john@home.com" மற்றும் பயன்படுத்தவும் echo இணைந்து tr அரைப்புள்ளி பிரிப்பானை புதிய வரி எழுத்தாக மொழிபெயர்க்க. இது சரத்தை தனிப்பட்ட வரிகளாக உடைக்கிறது. தி for லூப் பின்னர் ஒவ்வொரு வரியிலும் திரும்புகிறது, சதுர அடைப்புக்குறிக்குள் முகவரிகளை அச்சிடுகிறது. இந்த முறை நேரடியானது மற்றும் சரங்களைக் கையாள Unix கட்டளைகளின் சக்திவாய்ந்த உரை செயலாக்க திறன்களைப் பயன்படுத்துகிறது.
மற்றொரு முறை சரிசெய்தலை உள்ளடக்கியது Internal Field Separator (IFS). தற்காலிகமாக அமைப்பதன் மூலம் IFS அரைப்புள்ளிக்கு, நாம் சரத்தை ஒரு வரிசையாகப் பிரிக்கலாம். நாங்கள் அசல் சேமிக்கிறோம் IFS செய்ய OIFS அதை மாற்றுவதற்கு முன், அதை நாம் பின்னர் மீட்டெடுக்க முடியும் என்பதை உறுதிசெய்யவும். தி read -r -a கட்டளை உள்ளீட்டு சரத்தை ஒரு வரிசையில் படிக்கிறது mails2, மாற்றியமைக்கப்பட்டதன் அடிப்படையில் பிரித்தல் IFS. செயலாக்கத்திற்குப் பிறகு, அசல் IFS மீட்டெடுக்கப்படுகிறது. இந்த அணுகுமுறை பாஷில் சரம் பிரிப்பதைக் கையாள்வதற்கான மிகவும் நிரல் வழியை வழங்குகிறது, மேலும் கையாளுதலுக்கு அணிவரிசைகளைப் பயன்படுத்த அனுமதிக்கிறது.
டிலிமிட்டரில் சரங்களை பிரிக்க பாஷைப் பயன்படுத்துதல்
பேஷ் ஸ்கிரிப்ட்
#!/usr/bin/env bash# Input stringIN="bla@some.com;john@home.com"# Split string using 'tr' and iteratemails=$(echo $IN | tr ";" "\n")for addr in $mails; doecho "> [$addr]"done# Output:# > [bla@some.com]# > [john@home.com]
IFS ஐப் பயன்படுத்தி பாஷில் ஒரு சரத்தைப் பிரித்தல்
பேஷ் ஸ்கிரிப்ட்
#!/usr/bin/env bash# Input stringIN="bla@some.com;john@home.com"# Save the original IFSOIFS=$IFS# Set IFS to semicolonIFS=';'# Split string into an arrayread -r -a mails2 <<< "$IN"# Restore the original IFSIFS=$OIFS# Iterate over the arrayfor x in "${mails2[@]}"; doecho "> [$x]"done# Output:# > [bla@some.com]# > [john@home.com]
சரம் பிரிப்பதற்கு பைத்தானைப் பயன்படுத்துதல்
பைதான் ஸ்கிரிப்ட்
#!/usr/bin/env python3# Input stringIN = "bla@some.com;john@home.com"# Split string by semicolonmails = IN.split(';')# Iterate and print each elementfor addr in mails:print(f"> [{addr}]")# Output:# > [bla@some.com]# > [john@home.com]
ஒரு சரத்தைப் பிரிக்க பெர்லைப் பயன்படுத்துதல்
பெர்ல் ஸ்கிரிப்ட்
#!/usr/bin/env perluse strict;use warnings;# Input stringmy $IN = "bla@some.com;john@home.com";# Split string by semicolonmy @mails = split(';', $IN);# Iterate and print each elementforeach my $addr (@mails) {print "> [$addr]\n";}# Output:# > [bla@some.com]# > [john@home.com]
பாஷில் மேம்பட்ட சரம் பிளக்கும் நுட்பங்கள்
பாஷில் சரங்களைப் பிரிப்பதற்கான மற்றொரு சக்திவாய்ந்த முறை, பயன்படுத்துவதை உள்ளடக்கியது awk கட்டளை. awk பேட்டர்ன் ஸ்கேனிங் மற்றும் செயலாக்கத்திற்காக வடிவமைக்கப்பட்ட ஒரு பல்துறை கட்டளை வரி பயன்பாடாகும். தனிப்பயன் புலம் பிரிப்பான்களை வரையறுக்க இது அனுமதிக்கிறது, ஏனெனில் இது சரங்களைப் பிரிப்பதற்கு மிகவும் பயனுள்ளதாக இருக்கும். உதாரணமாக, நாம் பயன்படுத்தலாம் awk -F";" '{print $1, $2}' செமிகோலன் டிலிமிட்டரின் அடிப்படையில் ஒரு சரத்தைப் பிரித்து தனிப்பட்ட கூறுகளை அச்சிட. இந்த முறை மிகவும் நெகிழ்வானது மற்றும் மிகவும் சிக்கலான சரம் கையாளுதல் பணிகளைக் கையாள முடியும், இது ஒரு பாஷ் புரோகிராமரின் கருவித்தொகுப்பில் மதிப்புமிக்க கருவியாக அமைகிறது.
கூடுதலாக, தி cut டிலிமிட்டர்களின் அடிப்படையில் சரங்களைப் பிரிக்க கட்டளையைப் பயன்படுத்தலாம். தி cut உள்ளீட்டுத் தரவின் ஒவ்வொரு வரியிலிருந்தும் பிரிவுகளைப் பிரித்தெடுக்க கட்டளை பொதுவாகப் பயன்படுத்தப்படுகிறது. உடன் டிலிமிட்டரைக் குறிப்பிடுவதன் மூலம் -d விருப்பம் மற்றும் புலங்களைத் தேர்ந்தெடுப்பது -f விருப்பம், நாம் ஒரு சரத்தின் பகுதிகளை திறமையாக பிரித்து பிரித்தெடுக்கலாம். உதாரணமாக, பயன்படுத்தி echo $IN | cut -d';' -f1 உள்ளீடு சரத்திலிருந்து முதல் மின்னஞ்சல் முகவரியை பிரித்தெடுக்கும். இந்த மேம்பட்ட முறைகள் பாஷில் சரம் கையாளுதல் பணிகளுக்கு அதிக கட்டுப்பாட்டையும் துல்லியத்தையும் வழங்குகிறது.
பாஷில் சரம் பிரிப்பது பற்றிய பொதுவான கேள்விகள் மற்றும் பதில்கள்
- பாஷில் உள்ள டிலிமிட்டரில் சரத்தை எவ்வாறு பிரிப்பது?
- நீங்கள் பயன்படுத்தலாம் IFS மாறி அல்லது போன்ற கட்டளைகள் tr, awk, மற்றும் cut ஒரு டிலிமிட்டரில் சரங்களைப் பிரிக்க.
- என்ன IFS பாஷில் மாறி?
- தி IFS (உள் புலப் பிரிப்பான்) என்பது உள்ளீட்டு உரையை வார்த்தைகள் அல்லது டோக்கன்களாகப் பிரிக்கப் பயன்படும் எழுத்து(களை) வரையறுக்கும் ஒரு சிறப்பு மாறியாகும்.
- நான் எப்படி மீட்டமைக்க முடியும் IFS அதன் இயல்புநிலை மதிப்புக்கு மாறியா?
- அசல் சேமிக்கவும் IFS மாற்றுவதற்கு முன் மதிப்பு, மற்றும் செயலாக்கத்திற்குப் பிறகு அதை மீட்டமைக்கவும்: OIFS=$IFS; IFS=';'; ... ; IFS=$OIFS.
- என்ன செய்கிறது tr சரம் பிரிப்பதில் செய்ய கட்டளை?
- தி tr கட்டளை எழுத்துகளை மொழிபெயர்க்கிறது அல்லது நீக்குகிறது. ஒரு சரத்தைப் பிரிக்க, இது டிலிமிட்டர்களை புதிய வரிகளுடன் மாற்றலாம்: echo $IN | tr ";" "\n".
- பாஷைப் பயன்படுத்தி ஒரு சரத்தை அணிவரிசையாகப் பிரிக்க முடியுமா?
- ஆம், மாற்றுவதன் மூலம் IFS மாறி மற்றும் பயன்படுத்தி read -r -a, நீங்கள் ஒரு சரத்தை வரிசையாகப் பிரிக்கலாம்: read -r -a array <<< "$string".
- என்ன awk கட்டளை பயன்படுத்தப்பட்டது?
- awk பேட்டர்ன் ஸ்கேனிங் மற்றும் செயலாக்கத்திற்கான கட்டளை வரி பயன்பாடாகும். தனிப்பயன் புலம் பிரிப்பான்களை வரையறுப்பதன் மூலம் இது சரங்களைப் பிரிக்கலாம்.
- எப்படி செய்கிறது cut கட்டளை வேலை?
- தி cut உள்ளீட்டின் ஒவ்வொரு வரியிலிருந்தும் கட்டளை பிரித்தெடுக்கும் பிரிவுகள். இது ஒரு டிலிமிட்டரைக் குறிப்பிட்டு புலங்களைத் தேர்ந்தெடுப்பதன் மூலம் சரத்தைப் பிரிக்கலாம்: echo $string | cut -d';' -f1.
- ஏன் பயன்படுத்துகிறது IFS சரம் பிரிப்பதில் உதவியாக உள்ளதா?
- பயன்படுத்தி IFS சரங்களை பிரிப்பதற்கான தனிப்பயன் டிலிமிட்டர்களை வரையறுக்க உங்களை அனுமதிக்கிறது, இது வெவ்வேறு உள்ளீட்டு வடிவங்களுக்கு பல்துறை செய்கிறது.
- பாஷில் ஒரு சரத்தை பல டிலிமிட்டர்களால் பிரிக்க முடியுமா?
- ஆம், நீங்கள் கலவையைப் பயன்படுத்தலாம் tr மற்றும் awk பல எல்லைகளை கையாள.
- நான் பயன்படுத்தி கொள்ளலாமா sed பாஷில் சரம் பிரிப்பதற்காகவா?
- போது sed முதன்மையாக ஒரு ஸ்ட்ரீம் எடிட்டர், இது போன்ற பிற கட்டளைகளுடன் இணைக்கப்படலாம் awk சரங்களை மறைமுகமாக பிரிக்க.
பாஷில் சரம் பிரிப்பது பற்றிய இறுதி எண்ணங்கள்
பாஷில் சரம் கையாளுதலில் தேர்ச்சி பெறுவது உங்கள் ஸ்கிரிப்டிங் செயல்திறனை கணிசமாக மேம்படுத்தும். பயன்படுத்தினாலும் சரி IFS எளிய டிலிமிட்டர்கள் அல்லது மேம்பட்ட கருவிகளுக்கு tr மற்றும் awk, பயனுள்ள பாஷ் நிரலாக்கத்திற்கு இந்த நுட்பங்கள் அவசியம். அசலை எப்போதும் மீட்டெடுக்க நினைவில் கொள்ளுங்கள் IFS உங்கள் ஸ்கிரிப்ட்களில் எதிர்பாராத நடத்தையைத் தவிர்க்க. இந்த முறைகள் மூலம், உங்கள் பாஷ் ஸ்கிரிப்ட்களில் பலவிதமான சரம் செயலாக்க பணிகளை நீங்கள் கையாளலாம்.