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 stupacpopis 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.