Različiti načini korištenja naredbe Column u Linuxu
Jeste li ikada bili u situaciji da radite s CSV datotekama i proizvodite izlaz u strukturiranom tabelarnom formatu? Nedavno sam radio s čišćenjem podataka na datoteci koja nije u ispravnoj strukturi. Ima toliko razmaka između svakog stupca i moram ga pretvoriti u CSV format da bih ga poslao u bazu podataka. Nakon čišćenja i stvaranja izlaza u CSV formatu, moj izlaz nije vizualno privlačan za provjeru integriteta podataka u CSV datoteci. Ovo je trenutak kada mi naredba "Stupac" dobro dođe.
Prema stranici priručnika, naredba stupac “popis stupaca”. Jednostavnim riječima, stupac je jednostavan uslužni program koji može formatirati vaš izlaz u format stupca (retci i polja) na temelju strukture vaše izvorne datoteke. Naredba column dio je paketa util-linux.
Važno je napomenuti da se naredba column ponaša drugačije u distribucijama temeljenim na Debianu i Rhelu. Razlog je što distribucija temeljena na Debianu koristi “column ” iz bsdmainutils umjesto util-linux. Uzvodna verzija naredbe column je novija od paketa bsdmainutils. Pogledajte izvješće o pogrešci da biste saznali više o ovome.
dpkg -S $(which column)
U svrhu demonstracije, koristim CentOS 7 i pokazat ću različite opcije između Ubuntu i CentOS 7. Za provjeru verzije stupca pokrenite sljedeću naredbu. Ova naredba će također prikazati verziju paketa util-linux.
column --version # will not work in Debian/ubuntu
Također možete provjeriti verziju util-linuxa pokretanjem donjih naredbi.
rpm -qa | grep -i util-linux # Redhat,Centos,Fedora,Amazon Linux
dpkg -l | grep -i util-linux # Ubuntu
Prije korištenja naredbe column dobro je mjesto za početak biti man stranica i istraživanje njezinih opcija.
man column
Popis sadržaja datoteke u tabelarnom formatu
Naredba column može stvoriti tablicu prosljeđivanjem naziva datoteke kao argumenta zajedno s oznakom -t
. Koristim /etc/passwd kao ulaznu datoteku.
column -t /etc/passwd
Gledajući gornju sliku, možda ćete pomisliti da ovo nije ono što smo očekivali i rezultat bi mogao izgledati čudno. Da! U pravu si. Stupci uzimaju razmak kao zadani razdjelnik prilikom izrade tablice. Ovo se ponašanje može nadjačati prosljeđivanjem prilagođenog razdjelnika.
Prilagođeni razdjelnik
Prilagođeni razdjelnici daju vam širok raspon opcija za rad. Za izradu prilagođenog razdjelnika upotrijebite oznaku -s
iza koje slijedi razdjelnik. Sada ćemo koristiti “: ”
kao razdjelnik za dijeljenje /etc/passwd datoteke.
column -s ":" -t /etc/passwd
Pogledajte gornju sliku na kojoj je tablica lijepo oblikovana i strukturirana. Od util-linux verzije 2.23 opcija -s
je promijenjena da ne bude pohlepna.
Sada pokrenite istu naredbu u Ubuntu i rezultat će biti pohlepan. To je zato što će naredba stupac (bsdmainutils) na Ubuntu tretirati više susjednih riječi kao jednu riječ.
column -s ":" -t /etc/passwd
Za prevladavanje ovog ponašanja koristite -n
oznaku.
column -t -s ":" -n /etc/passwd # Only on Debian/Ubuntu
Ignorirajte bijele prazne retke u izlazu datoteke
Kada imate prazne retke u ulaznoj datoteci, naredba stupca to prema zadanim postavkama zanemaruje. Pogledajte moju ulaznu datoteku koja je u CSV formatu i dodao sam prazan redak između svakog retka. Kreirajmo sada tablicu kao što smo prije radili s ovom ulaznom datotekom.
column -t -s ";" dummy.txt
Na gornjoj slici možete vidjeti da moja ulazna datoteka dummy.txt ima prazne retke i kada pokušam stvoriti tablicu, prazni se reci zanemaruju.
Napomena: Ovo je zadano ponašanje za obje varijante “bsdmainutils/util-linux” naredbe column. Ali kolona (bsdmainutils) ima opciju nadjačati ovo ponašanje prosljeđivanjem oznake -e
.
column -e -t -s "," dummy.txt # Only on Debian/Ubuntu
Na gornjoj slici možete vidjeti da je tablica pravilno formatirana i da se prazni redovi ne zanemaruju.
Izlazni separator datoteke
Prema zadanim postavkama, dva razmaka će se koristiti kao izlazni separatori. Ovo se ponašanje može nadjačati prosljeđivanjem oznake -o
. Nećete imati dostupnu opciju izlaznog separatora u stupcu (bsdmainutils).
column -t -s "," -o "||" dummy.txt # Only on Rhel based distro
Pretvorite retke datoteke u stupce
Pomoću zastavice -x
možete retke pretvoriti u stupce. Ovo ponašanje je isto u obje varijante naredbe stupca rhel i ubuntu. Ovo je vrlo korisna značajka kada morate dohvatiti određeno polje kroz naredbu awk ili stupac, a zatim ga pretvoriti u zaglavlje svoje CSV datoteke.
column -x fillcols.txt
Kada pokrenete naredbu column bez korištenja oznaka, ponašanje će biti isto kao prosljeđivanje oznake -x
.
Pronađite veličinu stupca
Stupac koristi varijablu okoline ($COLUMNS)
kako bi saznao veličinu vašeg terminala i na temelju veličine upotrijebite naredbu echo, veličina tablice bit će prikazana na terminalu .
echo $COLUMNS
Pogledajte sliku ispod. U početku sam promijenio veličinu svog terminala da imam $COLUMNS
veličinu postavljenu na 60 i pokrenuo naredbu stupca. Opet sam promijenio veličinu svog terminala da imam $COLUMNS
veličinu postavljenu na 114 i ponovno pokrenuo naredbu stupca. Možete vidjeti razliku u tome kako stupac ispisuje tablicu kada promijenimo veličinu terminala.
column -t -s ":" /etc/passwd | head 5
To je to za ovaj članak. Ako imate povratne informacije, navedite ih u odjeljku za komentare.