Modi differenti kif tuża l-kmand tal-kolonna fil-Linux


Qatt kont f'sitwazzjoni li taħdem ma 'fajls CSV u tipproduċi output f'format tabulari strutturat? Riċentement kont qed naħdem bit-tindif tad-dejta fuq fajl li mhuwiex fi struttura xierqa. Għandu daqstant whitespaces bejn kull kolonna u għandi nikkonvertih f'format CSV biex nimbotta għad-database. Wara t-tindif u l-ħolqien tal-output fil-format CSV, il-produzzjoni tiegħi mhix viżwalment attraenti biex tivverifika l-integrità tad-dejta fil-fajl CSV. Dan huwa l-ħin li l-kmand tal-\Kolonna jiġi utli għalija.

Skont manpage, il-kmand tal-kolonna \listi tal-kolonna. Fi kliem sempliċi, il-kolonna hija utilità sempliċi li tista' tifformattja l-output tiegħek f'format ta' kolonna (ringieli u oqsma) ibbażat fuq l-istruttura tal-fajl tas-sors tiegħek. Il-kmand tal-kolonna huwa parti mill-pakkett util-linux.

Punt importanti li wieħed jinnota hawnhekk huwa l-kmand tal-kolonna jaġixxi b'mod differenti fir-rapport tal-bug biex tkun taf aktar dwar dan.

$ dpkg -S $(which column)

Għal skopijiet ta 'dimostrazzjoni, qed nuża CentOS 7 u se nuri għażliet differenti bejn Ubuntu u CentOS 7. Biex tiċċekkja l-verżjoni tal-kolonna mexxi l-kmand li ġej. Dan il-kmand se juri wkoll il-verżjoni tal-pakkett util-linux.

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

Tista 'wkoll tiċċekkja l-verżjoni ta' util-linux billi tħaddem il-kmandi hawn taħt.

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

Qabel ma tuża l-kmand tal-kolonna post tajjeb biex tibda tkun il-paġna man u tesplora l-għażliet tagħha.

$ man column

Lista tal-Kontenut tal-Fajl f'Format Tabulari

Il-kmand tal-kolonna jista' joħloq tabella billi jgħaddi l-isem tal-fajl bħala argument flimkien mal-bandiera -t. Qed nuża /etc/passwd bħala l-fajl tal-input.

$ column -t /etc/passwd

Meta wieħed iħares lejn l-immaġni ta 'hawn fuq, tista' taħseb li dan mhux dak li stennejna u l-output jista 'jidher stramb. Iva! Għandek raġun. Il-kolonni jqisu l-ispazju bħala d-delimitatur default meta joħolqu tabella. Din l-imġieba tista' tiġi ssuperata billi jgħaddi delimitatur tad-dwana.

Delimetru tad-dwana

Id-delimitaturi tad-dwana jagħtuk firxa wiesgħa ta 'għażliet biex taħdem magħhom. Biex toħloq delimitatur personalizzat uża l-marka -s segwit minn delimitatur. Issa se nużaw \:” bħala delimitatur biex naqsmu l-fajl /etc/passwd.

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

Ħares lejn l-immaġni ta 'hawn fuq fejn it-tabella hija fformattjata u strutturata tajjeb. Mill-verżjoni util-linux 2.23 l-għażla -s ġiet mibdula biex ma tkunx greedy.

Issa mexxi l-istess kmand f'Ubuntu u r-riżultat ikun greedy. Dan għaliex il-kmand tal-kolonna (bsdmainutils) fuq Ubuntu se jittratta kliem multipli maġenbhom bħala kelma waħda.

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

Biex tegħleb din l-imġieba uża l-marka -n.

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

Injora Linji Bojod vojta fl-Output tal-Fajl

Meta jkollok linji vojta fil-fajl tad-dħul tiegħek, il-kmand tal-kolonna awtomatikament jinjora. Ara l-fajl tad-dħul tiegħi li huwa f'format CSV u żidt linja vojta bejn kull linja. Issa ejja noħolqu tabella kif għamilna qabel ma 'dan il-fajl input.

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

Mill-immaġni ta 'hawn fuq tista' tara l-fajl tad-dħul tiegħi dummy.txt għandu linji vojta u meta nipprova noħloq tabella, linji vojta jiġu injorati.

Nota: Din hija l-imġieba default kemm għall-varjant \bsdmainutils/util-linux tal-kmand tal-kolonna. Iżda l-kolonna (bsdmainutils) għandha l-għażla li tegħleb din l-imġieba billi tgħaddi l-marka -e.

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

Mill-immaġni ta 'hawn fuq, tista' tara li t-tabella hija fformattjata kif suppost u l-linji vojta mhumiex injorati.

File Output Separator

B'mod awtomatiku, żewġ spazji bojod se jintużaw bħala separaturi tal-output. Din l-imġieba tista' tiġi megħluba billi tgħaddi l-marka -o. Mhux se jkollok għażla ta' separatur tal-output disponibbli fil-kolonna (bsdmainutils).

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

Ikkonverti Ringieli tal-Fajl f'Kolonni

Billi tuża l--x il-bandiera tista' tikkonverti ringieli f'kolonni. Din l-imġieba hija l-istess kemm fil-varjanti rhel u ubuntu tal-kmand tal-kolonna. Din hija karatteristika utli ħafna meta jkollok taqbad ċertu qasam permezz tal-kmand tal-awk jew tal-kolonna imbagħad jaqilbu għall-header għall-fajl CSV tiegħek.

$ column -x fillcols.txt

Meta tmexxi l-kmand tal-kolonna mingħajr ma tuża l-ebda bandiera l-imġieba tkun l-istess bħal tgħaddi l-bandiera -x.

Sib Daqs tal-Kolonna

Il-kolonna tuża varjabbli ambjentali ($COLUMNS) biex issir taf id-daqs tat-terminal tiegħek u abbażi tad-daqs uża l-kmand eku, id-daqs tal-mejda se jintwera fit-terminal.

$ echo $COLUMNS

Agħti ħarsa lejn l-immaġni hawn taħt. Inizjalment, jien biddel id-daqs tat-terminal tiegħi biex ikolli $COLUMNS id-daqs issettjat għal 60 u mexxi l-kmand tal-kolonna. Għal darb'oħra rġajt id-daqs tat-terminal tiegħi biex ikolli $COLUMNS id-daqs issettjat għal 114 u erġajt għamilt il-kmand tal-kolonna. Tista 'tara d-differenza fil-mod kif il-kolonna tipprintja t-tabella meta nbiddlu d-daqs tat-terminal.

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

Dak hu għal dan l-artikolu. Jekk għandek xi feedback jekk jogħġbok ipprovdiha fit-taqsima tal-kummenti.