Linux లో కాలమ్ కమాండ్ ఉపయోగించడానికి వివిధ మార్గాలు


మీరు ఎప్పుడైనా CSV ఫైళ్ళతో పనిచేయడానికి మరియు నిర్మాణాత్మక పట్టిక ఆకృతిలో అవుట్పుట్ను ఉత్పత్తి చేసే పరిస్థితిలో ఉన్నారా? ఇటీవల నేను సరైన నిర్మాణంలో లేని ఫైల్uపై డేటా ప్రక్షాళనతో పని చేస్తున్నాను. ఇది ప్రతి కాలమ్ మధ్య చాలా తెల్లని ప్రదేశాలను కలిగి ఉంది మరియు డేటాబేస్కు నెట్టడానికి నేను దానిని CSV ఫార్మాట్కు మార్చాలి. CSV ఆకృతిలో output ట్uపుట్uను శుభ్రపరిచి, సృష్టించిన తరువాత, CSV ఫైల్uలో డేటా సమగ్రతను ధృవీకరించడానికి నా అవుట్uపుట్ దృశ్యమానంగా లేదు. Col "కాలమ్" ఆదేశం నాకు ఉపయోగపడే సమయం ఇది.

మ్యాన్uపేజ్ ప్రకారం, కాలమ్ కమాండ్ column "కాలమ్ జాబితాలు". సాధారణ మాటలలో, కాలమ్ అనేది మీ సోర్స్ ఫైల్ యొక్క నిర్మాణం ఆధారంగా మీ అవుట్uపుట్uను కాలమ్ ఫార్మాట్uలోకి (వరుసలు మరియు ఫీల్డ్uలు) ఫార్మాట్ చేయగల ఒక సాధారణ యుటిలిటీ. కాలమ్ కమాండ్ యుట్-లినక్స్ ప్యాకేజీలో భాగం.

ఇక్కడ గమనించవలసిన ముఖ్యమైన విషయం ఏమిటంటే, కాలమ్ కమాండ్ దీని గురించి మరింత తెలుసుకోవడానికి బగ్ రిపోర్టులో భిన్నంగా ప్రవర్తిస్తుంది.

$ dpkg -S $(which column)

ప్రదర్శన ప్రయోజనాల కోసం, నేను సెంటొస్ 7 ను ఉపయోగిస్తున్నాను మరియు ఉబుంటు మరియు సెంటొస్ 7 మధ్య విభిన్న ఎంపికలను చూపుతాను. కాలమ్ వెర్షన్uను తనిఖీ చేయడానికి కింది ఆదేశాన్ని అమలు చేయండి. ఈ ఆదేశం util-linux ప్యాకేజీ సంస్కరణను కూడా చూపుతుంది.

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

దిగువ ఆదేశాలను అమలు చేయడం ద్వారా మీరు యుట్-లినక్స్ వెర్షన్uను కూడా తనిఖీ చేయవచ్చు.

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

కాలమ్ ఆదేశాన్ని ఉపయోగించే ముందు ప్రారంభించడానికి మంచి ప్రదేశం మ్యాన్ పేజ్ మరియు దాని ఎంపికలను అన్వేషించండి.

$ man column

పట్టిక ఆకృతిలో జాబితా కంటెంట్ జాబితా

-t ఫ్లాగ్uతో పాటు ఫైల్ పేరును ఆర్గ్యుమెంట్uగా పంపించడం ద్వారా కాలమ్ కమాండ్ పట్టికను సృష్టించగలదు. నేను/etc/passwd ని ఇన్పుట్ ఫైల్ గా ఉపయోగిస్తున్నాను.

$ column -t /etc/passwd

పై చిత్రాన్ని చూస్తే, ఇది మేము expected హించినది కాదని మీరు అనుకోవచ్చు మరియు అవుట్పుట్ విచిత్రంగా అనిపించవచ్చు. అవును! మీరు చెప్పింది నిజమే. పట్టికను సృష్టించేటప్పుడు నిలువు వరుసలు స్థలాన్ని డిఫాల్ట్ డీలిమిటర్uగా పరిగణిస్తాయి. కస్టమ్ డీలిమిటర్uను దాటడం ద్వారా ఈ ప్రవర్తనను భర్తీ చేయవచ్చు.

అనుకూల డీలిమీటర్

అనుకూల డీలిమిటర్లు మీకు పని చేయడానికి అనేక రకాల ఎంపికలను ఇస్తాయి. కస్టమ్ డీలిమిటర్uను సృష్టించడానికి -s ఫ్లాగ్ తరువాత డీలిమిటర్ ఉపయోగించండి. ఇప్పుడు మేము \":” ను/etc/passwd ఫైల్uను విభజించడానికి డీలిమిటర్uగా ఉపయోగిస్తాము.

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

పట్టిక చక్కగా ఆకృతీకరించబడిన మరియు నిర్మాణాత్మకంగా ఉన్న పై చిత్రాన్ని చూడండి. యుట్-లినక్స్ వెర్షన్ 2.23 నుండి -s అత్యాశగా మార్చబడలేదు.

ఇప్పుడు అదే ఆదేశాన్ని ఉబుంటులో అమలు చేయండి మరియు ఫలితం అత్యాశగా ఉంటుంది. ఎందుకంటే ఉబుంటులోని కాలమ్ కమాండ్ (bsdmainutils) అనేక ప్రక్కనే ఉన్న పదాలను ఒకే పదంగా పరిగణిస్తుంది.

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

ఈ ప్రవర్తనను అధిగమించడానికి -n ఫ్లాగ్uను ఉపయోగించండి.

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

ఫైల్ అవుట్uపుట్uలో తెలుపు ఖాళీ పంక్తులను విస్మరించండి

మీ ఇన్పుట్ ఫైల్uలో మీకు ఖాళీ పంక్తులు ఉన్నప్పుడు, కాలమ్ కమాండ్ అప్రమేయంగా దాన్ని విస్మరిస్తుంది. CSV ఆకృతిలో ఉన్న నా ఇన్uపుట్ ఫైల్uను చూడండి మరియు నేను ప్రతి పంక్తి మధ్య ఖాళీ పంక్తిని జోడించాను. ఈ ఇన్పుట్ ఫైల్uతో మేము ముందు చేసినట్లుగా ఇప్పుడు పట్టికను సృష్టిద్దాం.

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

పై చిత్రం నుండి మీరు నా ఇన్పుట్ ఫైల్ dummy.txt ఖాళీ పంక్తులను కలిగి ఉన్నట్లు చూడవచ్చు మరియు నేను పట్టికను సృష్టించడానికి ప్రయత్నించినప్పుడు, ఖాళీ పంక్తులు విస్మరించబడతాయి.

గమనిక: కాలమ్ కమాండ్ యొక్క b "bsdmainutils/util-linux" వేరియంట్uకు ఇది డిఫాల్ట్ ప్రవర్తన. అయితే కాలమ్ (bsdmainutils) -e ఫ్లాగ్uను దాటడం ద్వారా ఈ ప్రవర్తనను భర్తీ చేయగల అవకాశం ఉంది.

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

పై చిత్రం నుండి, పట్టిక సరిగ్గా ఆకృతీకరించబడిందని మరియు ఖాళీ పంక్తులు విస్మరించబడవని మీరు చూడవచ్చు.

ఫైల్ అవుట్పుట్ సెపరేటర్

అప్రమేయంగా, రెండు తెల్లని ఖాళీలు అవుట్పుట్ సెపరేటర్లుగా ఉపయోగించబడతాయి. -o ఫ్లాగ్uను దాటడం ద్వారా ఈ ప్రవర్తనను భర్తీ చేయవచ్చు. మీకు కాలమ్ (bsdmainutils) లో అవుట్పుట్ సెపరేటర్ ఎంపిక అందుబాటులో లేదు.

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

ఫైల్ వరుసలను నిలువు వరుసలుగా మార్చండి

-x జెండాను ఉపయోగించి మీరు అడ్డు వరుసలను నిలువు వరుసలుగా మార్చవచ్చు. కాలమ్ కమాండ్ యొక్క రీల్ మరియు ఉబుంటు వేరియంట్లలో ఈ ప్రవర్తన ఒకే విధంగా ఉంటుంది. మీరు ఒక నిర్దిష్ట ఫీల్డ్uను awk లేదా కాలమ్ కమాండ్ ద్వారా పట్టుకోవలసి వచ్చినప్పుడు ఇది చాలా ఉపయోగకరమైన లక్షణం, ఆపై దాన్ని మీ CSV ఫైల్ కోసం హెడర్uకు మార్చండి.

$ column -x fillcols.txt

మీరు ఎటువంటి జెండాలను ఉపయోగించకుండా కాలమ్ ఆదేశాన్ని అమలు చేసినప్పుడు ప్రవర్తన -x ఫ్లాగ్uను దాటినట్లే ఉంటుంది.

కాలమ్ పరిమాణాన్ని కనుగొనండి

మీ టెర్మినల్ యొక్క పరిమాణాన్ని తెలుసుకోవడానికి కాలమ్ పర్యావరణ వేరియబుల్ ($COLUMNS) ను ఉపయోగిస్తుంది మరియు పరిమాణం ఆధారంగా ఎకో కమాండ్uను ఉపయోగిస్తుంది, టేబుల్ పరిమాణం టెర్మినల్uలో ప్రదర్శించబడుతుంది.

$ echo $COLUMNS

క్రింద ఉన్న చిత్రాన్ని చూడండి. ప్రారంభంలో, నేను నా టెర్మినల్uను $COLUMNS పరిమాణాన్ని 60 కి సెట్ చేసి, కాలమ్ కమాండ్uను అమలు చేసాను. మళ్ళీ నేను $COLUMNS పరిమాణాన్ని 114 కు సెట్ చేయడానికి నా టెర్మినల్ పరిమాణాన్ని మార్చాను మరియు కాలమ్ ఆదేశాన్ని మళ్ళీ అమలు చేసాను. మేము టెర్మినల్ పరిమాణాన్ని మార్చినప్పుడు కాలమ్ పట్టికను ఎలా ప్రింట్ చేస్తుందో మీరు చూడవచ్చు.

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

ఈ వ్యాసం కోసం అది. మీకు ఏదైనా అభిప్రాయం ఉంటే దయచేసి వ్యాఖ్య విభాగంలో అందించండి.