லினக்ஸில் நெடுவரிசை கட்டளையைப் பயன்படுத்த வெவ்வேறு வழிகள்


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

மேன்பேஜின் படி, நெடுவரிசை கட்டளை “நெடுவரிசை பட்டியல்கள்”. எளிமையான சொற்களில், நெடுவரிசை என்பது உங்கள் மூல கோப்பின் கட்டமைப்பை அடிப்படையாகக் கொண்டு உங்கள் வெளியீட்டை நெடுவரிசை வடிவத்தில் (வரிசைகள் மற்றும் புலங்கள்) வடிவமைக்கக்கூடிய எளிய பயன்பாடாகும். நெடுவரிசை கட்டளை util-linux தொகுப்பின் ஒரு பகுதியாகும்.

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

$ dpkg -S $(which column)

ஆர்ப்பாட்ட நோக்கங்களுக்காக, நான் CentOS 7 ஐப் பயன்படுத்துகிறேன், உபுண்டு மற்றும் CentOS 7 க்கு இடையில் வெவ்வேறு விருப்பங்களைக் காண்பிப்பேன். நெடுவரிசை பதிப்பைச் சரிபார்க்க பின்வரும் கட்டளையை இயக்கவும். இந்த கட்டளை util-linux தொகுப்பு பதிப்பையும் காண்பிக்கும்.

$ column --version  # will not work in Debian/ubuntu

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

$ rpm -qa | grep -i util-linux   # Redhat,Centos,Fedora,Amazon Linux
$ dpkg -l | grep -i util-linux    # Ubuntu

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

$ man column

அட்டவணை உள்ளடக்கத்தில் கோப்பு உள்ளடக்கத்தை பட்டியலிடுங்கள்

நெடுவரிசை கட்டளை -t கொடியுடன் கோப்பு பெயரை ஒரு வாதமாக அனுப்பி அட்டவணையை உருவாக்க முடியும். நான் உள்ளீட்டு கோப்பாக/etc/passwd ஐப் பயன்படுத்துகிறேன்.

$ column -t /etc/passwd

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

தனிப்பயன் டிலிமீட்டர்

தனிப்பயன் டிலிமிட்டர்கள் பணிபுரிய உங்களுக்கு பலவிதமான விருப்பங்களை வழங்குகின்றன. தனிப்பயன் டிலிமிட்டரை உருவாக்க -s கொடியைத் தொடர்ந்து ஒரு டிலிமிட்டரைப் பயன்படுத்தவும். இப்போது நாம் “:” ஐ/etc/passwd கோப்பைப் பிரிக்க ஒரு டிலிமிட்டராகப் பயன்படுத்துவோம்.

$ column -s ":"  -t /etc/passwd

அட்டவணை நன்றாக வடிவமைக்கப்பட்டு கட்டமைக்கப்பட்டிருக்கும் மேலே உள்ள படத்தைப் பாருங்கள். யூட்-லினக்ஸ் பதிப்பு 2.23 விருப்பத்திலிருந்து -s பேராசை இல்லாததாக மாற்றப்பட்டுள்ளது.

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

$ column -s ":"  -t /etc/passwd

இந்த நடத்தையை சமாளிக்க -n கொடியைப் பயன்படுத்தவும்.

$ column -t -s ":" -n /etc/passwd             # Only on Debian/Ubuntu

கோப்பு வெளியீட்டில் வெள்ளை வெற்று கோடுகளை புறக்கணிக்கவும்

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

$ column -t -s ";" dummy.txt

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

குறிப்பு: நெடுவரிசை கட்டளையின் “bsdmainutils/util-linux” மாறுபாட்டிற்கான இயல்புநிலை நடத்தை இதுவாகும். ஆனால் நெடுவரிசைக்கு (bsdmainutils) -e கொடியைக் கடந்து இந்த நடத்தை மேலெழுத விருப்பம் உள்ளது.

$ column -e -t -s "," dummy.txt        # Only on Debian/Ubuntu

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

கோப்பு வெளியீடு பிரிப்பான்

இயல்பாக, இரண்டு வெள்ளை இடைவெளிகள் வெளியீட்டு பிரிப்பான்களாகப் பயன்படுத்தப்படும். -o கொடியைக் கடந்து இந்த நடத்தை மீறப்படலாம். நெடுவரிசையில் (bsdmainutils) வெளியீட்டு பிரிப்பான் விருப்பம் உங்களிடம் இருக்காது.

$ column -t -s "," -o "||" dummy.txt	# Only on Rhel based distro

கோப்பு வரிசைகளை நெடுவரிசைகளாக மாற்றவும்

-x கொடியைப் பயன்படுத்தி நீங்கள் வரிசைகளை நெடுவரிசைகளாக மாற்றலாம். நெடுவரிசை கட்டளையின் rhel மற்றும் ubuntu வகைகளில் இந்த நடத்தை ஒன்றுதான். நீங்கள் ஒரு குறிப்பிட்ட புலத்தை awk அல்லது நெடுவரிசை கட்டளை மூலம் கைப்பற்றும்போது இது உங்கள் CSV கோப்பிற்கான தலைப்புக்கு மாற்றும்போது இது மிகவும் பயனுள்ள அம்சமாகும்.

$ column -x fillcols.txt

எந்தக் கொடிகளையும் பயன்படுத்தாமல் நெடுவரிசை கட்டளையை நீங்கள் இயக்கும்போது, நடத்தை -x கொடியைக் கடந்து செல்வதற்கு சமமாக இருக்கும்.

நெடுவரிசை அளவைக் கண்டறியவும்

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

$ echo $COLUMNS

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

$ column -t -s ":" /etc/passwd | head 5

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