Različni načini uporabe ukaza stolpca v Linuxu


Ste že kdaj bili v položaju, da bi delali z datotekami CSV in ustvarjali rezultate v strukturirani tabeli? Pred kratkim sem delal s čiščenjem podatkov v datoteki, ki ni v ustrezni strukturi. Med posameznimi stolpci ima toliko presledkov, da ga moram pretvoriti v format CSV, da ga potisnem v bazo podatkov. Po čiščenju in ustvarjanju izhoda v obliki CSV moj izhod ni vizualno privlačen za preverjanje celovitosti podatkov v datoteki CSV. Takrat mi ukaz\"Stolpec" pride prav.

Glede na manpage je ukaz stolpca\"stolpčni seznami". Z enostavnimi besedami je stolpec preprost pripomoček, ki lahko izhodne podatke oblikuje v obliko stolpca (vrstice in polja) glede na strukturo izvorne datoteke. del paketa util-linux.

Pomembno je omeniti, da se ukaz stolpca v poročilu o napakah obnaša drugače, če želite izvedeti več o tem.

$ dpkg -S $(which column)

Za predstavitvene namene uporabljam CentOS 7 in bom prikazal različne možnosti med Ubuntu in CentOS 7. Če želite preveriti različico stolpca, zaženite naslednji ukaz. Ta ukaz bo prikazal tudi različico paketa util-linux.

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

Različico util-linux lahko preverite tudi tako, da zaženete spodnje ukaze.

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

Pred uporabo ukaza stolpca je dobro mesto za začetek man stran in raziščite njene možnosti.

$ man column

Vsebino datoteke navedite v tabelarni obliki

Ukaz stolpec lahko ustvari tabelo tako, da kot argument skupaj z zastavico -t posreduje ime datoteke. Kot vhodno datoteko uporabljam/etc/passwd.

$ column -t /etc/passwd

Če pogledate zgornjo sliko, se vam morda zdi, da to ni tisto, kar smo pričakovali, in rezultat je lahko čuden. Ja! Prav imaš. V stolpcih je prostor privzeto ločilo pri ustvarjanju tabele. To vedenje lahko preglasimo s podajanjem ločila po meri.

Delimeter po meri

Ločila po meri vam ponujajo široko paleto možnosti za delo. Če želite ustvariti ločilo po meri, uporabite zastavico -s , ki ji sledi ločilo. Zdaj bomo \":" uporabili kot ločilo za razdelitev datoteke/etc/passwd.

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

Poglejte zgornjo sliko, kjer je tabela lepo oblikovana in strukturirana. V različici util-linux 2.23 je bila možnost -s spremenjena tako, da ni požrešna.

Zdaj zaženite isti ukaz v Ubuntuju in rezultat bo pohlepen. To je zato, ker bo ukaz stolpca (bsdmainutils) v Ubuntuju več sosednjih besed obravnaval kot eno besedo.

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

Če želite premagati to vedenje, uporabite zastavico -n .

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

Prezri bele prazne vrstice v izhodu datoteke

Ko imate v vhodni datoteki prazne vrstice, jih ukaz stolpca privzeto prezre. Oglejte si mojo vhodno datoteko v obliki CSV in med vsako vrstico sem dodal prazno vrstico. Zdaj pa ustvarimo tabelo, kot smo to storili prej s to vhodno datoteko.

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

Na zgornji sliki lahko vidite, da ima moja vhodna datoteka dummy.txt prazne vrstice in ko poskušam ustvariti tabelo, so prazne vrstice prezrte.

Opomba: To je privzeto vedenje za različico\"bsdmainutils/util-linux" ukaza stolpca, vendar ima stolpec (bsdmainutils) možnost, da to vedenje preglasi tako, da posreduje zastavico -e .

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

Na zgornji sliki lahko vidite, da je tabela pravilno formatirana in prazne vrstice niso prezrte.

Ločevalnik izhodnih datotek

Privzeto se kot ločevalnika izhoda uporabita dva presledka. To vedenje je mogoče preglasiti s podajanjem zastavice -o . V stolpcu ne boste imeli na voljo možnosti ločevanja izhoda (bsdmainutils).

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

Pretvori vrstice datotek v stolpce

Z zastavico -x lahko pretvorite vrstice v stolpce. To vedenje je enako v različicah rhel in ubuntu ukaza stolpca. To je zelo uporabna funkcija, ko morate prek ukaza awk ali stolpec zajeti določeno polje in ga nato pretvoriti v glavo datoteke CSV.

$ column -x fillcols.txt

Ko zaženete ukaz stolpca brez uporabe zastavic, bo vedenje enako kot posredovanje zastavice -x .

Poiščite velikost stolpca

Stolpec uporablja okoljsko spremenljivko ($COLUMNS) , da ugotovi velikost vašega terminala, na podlagi velikosti pa uporabite ukaz echo, v terminalu bo prikazana velikost tabele.

$ echo $COLUMNS

Oglejte si spodnjo sliko. Sprva sem prilagodil velikost terminala, tako da je bila $COLUMNS velikost nastavljena na 60, in zagnal ukaz stolpca. Spet sem spremenil velikost terminala, tako da je bila velikost $COLUMNS nastavljena na 114, in znova zagnal ukaz stolpca. Razliko vidite, kako stolpec natisne tabelo, ko spremenimo velikost terminala.

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

To je to za ta članek. Če imate kakršne koli povratne informacije, jih navedite v oddelku za komentarje.