செட் நியூலைனை ஸ்பேஸுடன் மாற்றவும்

Cet Niyulainai Spesutan Marravum



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

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

உரையை மாற்றுவதற்கு sed ஐப் பயன்படுத்துதல்

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







$ sed -e 's///'

பின்வரும் கட்டளையைப் பாருங்கள்:



$ எதிரொலி 'விரைவான பழுப்பு நரி' | sed -e 's/quick/fast/g'



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





புதிய வரிகளை இடத்துடன் மாற்றுதல்

ஆர்ப்பாட்டத்திற்காக, நான் பின்வரும் உரைக் கோப்பை test.txt ஐ பல போலி உள்ளடக்கங்களுடன் உருவாக்கியுள்ளேன்:

$ cat test.txt



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

$ sed -e 's/\n/ /g' test.txt

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

$ sed -e ':a;N;$!ba;s/\n/ /g' test.txt

sed கட்டளை பல பிரிவுகளைக் கொண்டுள்ளது; ஒவ்வொன்றும் ஒரு குறிப்பிட்ட பணியைக் குறிக்கிறது:

  • :a: 'a' லேபிளை உருவாக்குகிறது
  • N: பேட்டர்ன் ஸ்பேஸில் அடுத்த வரியைச் சேர்க்கிறது
  • $!ba: கடைசி வரி இல்லையென்றால், 'a' லேபிளுக்குத் திரும்பும்
  • s/\n/ /g: புதிய வரியைக் கண்டுபிடித்து (\n) இடத்தை (/ /) கொண்டு மாற்றுகிறது. இந்த முறை உலகளவில் பொருந்துகிறது (/g)

sed கட்டளை கடைசி வரியை அடையும் வரை படிகள் வழியாக சுழல்கிறது, எல்லா \n எழுத்துகளையும் இடத்துடன் மாற்றுகிறது.

இந்த சிக்கலான கட்டளைக்குப் பதிலாக, பூஜ்யமாக பிரிக்கப்பட்ட பதிவுகளுடன் வேலை செய்ய sed ஐக் குறிப்பிடும் -z கொடியைப் பயன்படுத்தி விஷயங்களை எளிதாக்கலாம். கட்டளை இப்படி இருக்கும்:

$ sed -z -e 's/\n/ /g' test.txt

மாற்று முறைகள்

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

பின்வரும் எடுத்துக்காட்டுக்கு, புதிய வரியை ஒரு எளிய முறையில் இடைவெளியுடன் மாற்றுவதற்கு tr கட்டளையைப் பயன்படுத்தலாம்:

$ tr '\n' ' ' < test.txt

வேலையைச் செய்ய நாம் perl ஐப் பயன்படுத்தலாம். பின்வரும் தொடரியல் sed உடன் நாம் பயன்படுத்தியதைப் போலவே உள்ளது (ஆனால் எளிமைப்படுத்தப்பட்டது):

$ perl -p -e 's/\n/ /' test.txt

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

$ பேஸ்ட் -s -d ' ' test.txt

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

$ awk 1 ORS=' ' test.txt

முடிவுரை

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

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