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