Linux-da sütün buýrugyny ulanmagyň dürli ýollary


CSV faýllary bilen işlemek we gurluşly tablisa görnüşinde çykyş öndürmek üçin bir ýagdaýa düşdüňizmi? Recentlyakynda degişli gurluşda bolmadyk faýlda maglumatlary arassalamak bilen işleýärdim. Her sütüniň arasynda gaty köp boş ýer bar we maglumat bazasyna basmak üçin ony CSV formata öwürmeli. Çykyşy CSV formatda arassalandan we döredenimden soň, çykyşym CSV faýlyndaky maglumatlaryň bitewiligini barlamak üçin göze ilmeýär. Bu\Sütün buýrugynyň maňa peýdaly wagty.

Sahypa laýyklykda, sütün buýrugy\sütün sanawlary. Simpleönekeý sözler bilen aýdylanda, sütün çeşme faýlyňyzyň gurluşyna esaslanyp, çykyşyňyzy sütün formatyna (hatar we meýdan) formatlap bilýän ýönekeý peýdalydyr. Sütün buýrugy util-linux paketiniň bir bölegi.

Bu ýerde bellemeli möhüm bir zat, sütün buýrugy bu hakda has giňişleýin bilmek üçin säwlik hasabatynda başgaça hereket edýär.

$ dpkg -S $(which column)

Görkeziş maksatlary üçin, CentOS 7 ulanýaryn we Ubuntu bilen CentOS 7 arasynda dürli opsiýalary görkezerin. Sütün wersiýasyny barlamak üçin aşakdaky buýrugy işlediň. Bu buýruk util-linux paket wersiýasyny hem görkezer.

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

Şeýle hem aşakdaky buýruklary işledip util-linux wersiýasyny barlap bilersiňiz.

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

Sütün buýrugyny ulanmazdan ozal adam sahypasy we onuň wariantlaryny öwrenmek üçin gowy ýer bolar.

$ man column

Faýl mazmunyny tablisa görnüşinde sanaň

Sütün buýrugy, faýl adyny -t baýdagy bilen bilelikde argument hökmünde geçirip, tablisa döredip biler. Giriş faýly hökmünde/etc/passwd ulanýaryn.

$ column -t /etc/passwd

Aboveokardaky surata seretseň, bu biziň garaşyşymyz ýaly däl diýip pikir edip bilersiňiz we çykyş geň görünip biler. Hawa! Sen mamla. Sütünler tablisa döredilende boşlugy deslapky bölüji hasaplaýarlar. Customörite delimiterden geçip, bu özüni alyp barşyny ýok edip bolar.

Omörite delimetr

Omörite delimiterler size işlemek üçin giň mümkinçilikleri berýär. Customörite delimiter döretmek üçin -s baýdagyny ulanyň, soňundan aýyryjy. Indi \: bölmek/etc/passwd faýly bölmek üçin ulanarys.

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

Tablisa owadan formatlanan we gurluşly ýokardaky surata serediň. Util-linux 2.23 wersiýasyndan -s opsiýasy açgöz bolmazlyk üçin üýtgedildi.

Indi Ubuntu-da şol bir buýrugy işlediň we netijesi açgöz bolar. Sebäbi Ubuntu-daky sütün buýrugy (bsdmainutils) birnäçe ýanaşyk sözleri bir söz hökmünde kabul eder.

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

Bu özüni alyp barşy ýeňip geçmek üçin -n baýdagyny ulanyň.

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

Faýl çykyşynda ak boş çyzyklara ähmiýet bermäň

Giriş faýlyňyzda boş setirler bar bolsa, sütün buýrugy oňa ähmiýet bermeýär. CSV formatdaky giriş faýlymy görüň we her setiriň arasynda boş setir goşdum. Indi bu giriş faýly bilen edişimiz ýaly tablisa döredeliň.

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

Aboveokardaky suratdan giriş faýlym dummy.txt-iň boş setirlerini görüp bilersiňiz we tablisa döretjek bolanymda boş setirler hasaba alynmaýar.

Bellik: Bu sütün buýrugynyň\bsdmainutils/util-linux görnüşi üçin deslapky hereket. Columnöne sütün (bsdmainutils) -e baýdagyny geçip, bu hereketi ýok edip biler.

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

Aboveokardaky suratdan tablisanyň dogry formatlanandygyny we boş setirleriň hasaba alynmaýandygyny görüp bilersiňiz.

Faýl çykaryjy aýyryjy

Adaty tertipde çykyş bölüji hökmünde iki sany ak boşluk ulanylar. Bu häsiýeti -o baýdagyny geçmek bilen ýok edip bolýar. Sütünde (bsdmainutils) çykyş bölüji opsiýaňyz bolmaz.

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

Faýl hatarlaryny sütünlere öwüriň

Baýdak -x ulanyp, hatarlary sütünlere öwrüp bilersiňiz. Bu özüňi alyp barmak sütün buýrugynyň rhel we ubuntu görnüşlerinde-de deňdir. Awk ýa-da sütün buýrugy arkaly belli bir meýdany tutup, ony CSV faýlyňyzyň sözbaşysyna öwürmeli bolanyňyzda bu gaty peýdaly aýratynlykdyr.

$ column -x fillcols.txt

Sütün buýrugyny haýsydyr bir baýdak ulanman işledeniňizde, özüni alyp barşyňyz -x baýdagyny geçmek bilen deň bolar.

Sütüniň ululygyny tapyň

Sütün, terminalyňyzyň ululygyny bilmek üçin daşky gurşaw üýtgeýjisi ($COLUMNS) ulanýar we echo buýrugyny ulanmagyň ululygyna baglylykda terminalda tablisanyň ululygy görkeziler.

$ echo $COLUMNS

Aşakdaky surata göz aýlaň. Ilkibaşda 60-a çenli ululykda $COLUMNS bolmagy üçin terminalymy üýtgetdim we sütün buýrugyny işledim. Againene-de 114-e düzülen ululygy $COLUMNS bolmagy üçin terminalymy üýtgedip, sütün buýrugyny täzeden işledim. Terminalyň ölçegini üýtgedenimizde sütüniň tablisany nädip çap edýändiginiň tapawudyny görüp bilersiňiz.

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

Bu makala üçin. Pikirleriňiz bar bolsa düşündiriş bölüminde beriň.