Linux-da täsirli faýl amallary üçin teksti süzmek üçin peýdaly buýruklar


Bu makalada Linux-da süzgüç hökmünde çykyş edýän birnäçe buýruk setir gurallaryny gözden geçireris. Süzgüç, adaty girişi okaýan, üstünde operasiýa ýerine ýetirýän we netijeleri adaty çykyşa ýazýan programma.

Şol sebäpli, peýdaly hasabatlary döretmek üçin çykyşlary üýtgedip gurmak, faýllarda teksti üýtgetmek we beýleki köp sanly ulgam dolandyryş meseleleri ýaly maglumatlary güýçli işlemek üçin ulanylyp bilner.

Bu aýdylanda, aşakda Linux-da käbir peýdaly faýl ýa-da tekst süzgüçleri bar.

1. Awk buýrugy

Awk ajaýyp nagyş skanerlemek we gaýtadan işlemek dili, Linux-da peýdaly süzgüçler gurmak üçin ulanylyp bilner. Awk seriýamyzyň 1-nji bölüminden 13-nji bölümine çenli okap başlap bilersiňiz.

Mundan başga-da, has giňişleýin maglumat we ulanylyş opsiýalary üçin awk adam sahypasyny okaň:

$ man awk

2. Sed buýrugy

sed teksti süzmek we üýtgetmek üçin güýçli akym redaktorydyr. Biz eýýäm sed hakda iki sany peýdaly makala ýazdyk, bu ýerden geçip bilersiňiz:

  1. Linux-da faýllary döretmek, redaktirlemek we dolandyrmak üçin GNU sed buýrugyny nädip ulanmaly
  2. 15 Gündelik Linux ulgam dolandyryş meseleleri üçin peýdaly “sed” buýruklar we maslahatlar

“Sed man” sahypasynda dolandyryş opsiýalary we görkezmeler goşuldy:

$ man sed

3. Grep, Egrep, Fgrep, Rgrep buýruklary

Bu süzgüçler, berlen nagşa gabat gelýän çykyş setirleri. Faýldan ýa-da adaty girişden setirleri okaýarlar we adaty gabat gelýän setirleri adaty görnüşde çap edýärler.

Bellik: Esasy programma aşakdaky ýaly belli grep opsiýalaryny ulanýar (we olar henizem yza gabat gelmek üçin ulanylýar):

$ egrep = grep -E
$ fgrep = grep -F
$ rgrep = grep -r  

Aşakda grep buýruklary bar:

[email  ~ $ grep "aaronkilik" /etc/passwd
aaronkilik:x:1001:1001::/home/aaronkilik:

[email  ~ $ cat /etc/passwd | grep "aronkilik"
aaronkilik:x:1001:1001::/home/aaronkilik:

Linux-da Grep, Egrep we Fgrep-iň tapawudy barada has giňişleýin maglumat alyp bilersiňiz.

4. baş buýruk

kellesi faýlyň birinji böleklerini görkezmek üçin ulanylýar, deslapky 10 setirden çykýar. Görkezilmeli setirleriň sanyny kesgitlemek üçin -n num baýdagyny ulanyp bilersiňiz:

[email  ~ $ head /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:55:01 TecMint CRON[4099]: pam_unix(cron:session): session closed for user root
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 11:05:01 TecMint CRON[4138]: pam_unix(cron:session): session closed for user root
Jan  2 11:09:01 TecMint CRON[4146]: pam_unix(cron:session): session opened for user root by (uid=0)

[email  ~ $ head  -n 5 /var/log/auth.log  
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session opened for user root by (uid=0)
Jan  2 10:45:01 TecMint CRON[3383]: pam_unix(cron:session): session closed for user root
Jan  2 10:51:34 TecMint sudo:  tecmint : TTY=unknown ; PWD=/home/tecmint ; USER=root ; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.py
Jan  2 10:51:34 TecMint sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
Jan  2 10:51:39 TecMint sudo: pam_unix(sudo:session): session closed for user root

Linux-da netijeli ulanmak üçin guýruk we pişik buýruklary bilen baş buýrugy nähili ulanmalydygyny öwreniň.

5. guýruk buýrugy

guýruk faýlyň soňky böleklerini (tertip boýunça 10 setir) çykarýar. Görkezilmeli setirleriň sanyny kesgitlemek üçin -n num wyklýuçatelini ulanyň.

Aşakdaky buýruk görkezilen faýlyň soňky 5 setirini çykarar:

[email  ~ $ tail -n 5 /var/log/auth.log
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

Mundan başga-da, guýrugyň bir faýldaky üýtgeşmeleri hakyky wagtda görmek üçin (esasanam gündelik faýllar) -f aýratyn opsiýasy bar.

Aşakdaky buýruk görkezilen faýldaky üýtgeşmelere gözegçilik etmäge mümkinçilik berer:

[email  ~ $ tail -f /var/log/auth.log
Jan  6 12:58:01 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 12:58:11 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 12:58:12 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Received SIGHUP; restarting.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on 0.0.0.0 port 22.
Jan  6 13:01:27 TecMint sshd[1269]: Server listening on :: port 22.

Ulanyş opsiýalarynyň we görkezmeleriniň doly sanawy üçin guýruk adam sahypasyny okaň:

$ man tail

6. buýrugy tertipläň

sort tekst faýlynyň setirlerini ýa-da adaty girişden tertiplemek üçin ulanylýar.

Aşakda domains.list atly faýlyň mazmuny:

[email  ~ $ cat domains.list
linux-console.net
linux-console.net
news.linux-console.net
news.linux-console.net
linuxsay.com
linuxsay.com
windowsmint.com
windowsmint.com

Faýlyň mazmunyny şeýle tertiplemek üçin ýönekeý tertip buýrugyny işledip bilersiňiz:

[email  ~ $ sort domains.list
linuxsay.com
linuxsay.com
news.linux-console.net
news.linux-console.net
linux-console.net
linux-console.net
windowsmint.com
windowsmint.com

Sort buýrugyny köp usulda ulanyp bilersiňiz, sort buýrugy boýunça käbir peýdaly makalalary aşakdaky ýaly geçip bilersiňiz:

  1. 14 Linux “sort” buýrugynyň peýdaly mysallary - 1-nji bölüm
  2. 7 Gyzykly Linux “sort” buýruk mysallary - 2-nji bölüm
  3. Üýtgetme senesi we wagty esasynda faýllary nädip tapmaly we tertipleşdirmeli
  4. Ls buýrugynyň çykyşyny soňky üýtgedilen senä we wagt boýunça nädip tertipleşdirmeli

7. uniq buýrugy

uniq buýrugy gaýtalanýan setirleri habar bermek ýa-da taşlamak üçin ulanylýar, setirleri adaty girişden süzýär we netijäni adaty çykyşa ýazýar.

Giriş akymynda tertibi işledeniňizden soň, aşakdaky mysaldaky ýaly uniq bilen gaýtalanýan setirleri aýryp bilersiňiz.

Setirde ýüze çykýanlaryň sanyny görkezmek üçin -c opsiýasyny ulanyň we -i opsiýasyny goşmak bilen deňeşdireniňde tapawutlara üns bermäň:

[email  ~ $ cat domains.list
linux-console.net
linux-console.net
news.linux-console.net
news.linux-console.net
linuxsay.com
linuxsay.com
windowsmint.com

[email  ~ $ sort domains.list | uniq -c 
2 linuxsay.com
2 news.linux-console.net
2 linux-console.net
1 windowsmint.com 

Has giňişleýin maglumat we baýdaklar üçin uniq man sahypasyny okaň:

$ man uniq

8. fmt buýrugy

fmt ýönekeý optimal tekst formatlaýjy, görkezilen faýldaky abzaslary üýtgedýär we netijeleri adaty çykyşda çap edýär.

Aşakda domain-list.txt faýlyndan alnan mazmun:

1.linux-console.net 2.news.linux-console.net 3.linuxsay.com 4.windowsmint.com

Aboveokardaky mazmuny adaty sanawda üýtgetmek üçin iň ýokary setir giňligini kesgitlemek üçin aşakdaky buýrugy -w wyklýuçateli bilen işlediň:

[email  ~ $ cat domain-list.txt 
1.linux-console.net 2.news.linux-console.net 3.linuxsay.com 4.windowsmint.com

[email  ~ $ fmt -w 1 domain-list.txt
1.linux-console.net 
2.news.linux-console.net 
3.linuxsay.com 
4.windowsmint.com

9. pr buýruk

pr buýrugy tekst faýllaryny ýa-da çap etmek üçin adaty girişleri öwürýär. Mysal üçin, Debian ulgamlarynda ähli gurnalan paketleri aşakdaky ýaly sanap bilersiňiz:

$ dpkg -l

Sanawy çap etmäge taýyn sahypalarda we sütünlerde tertiplemek üçin aşakdaky buýrugy beriň.

[email  ~ $ dpkg -l | pr --columns 3 -l 20  

2017-01-06 13:19                                                  Page 1


Desired=Unknown/Install ii  adduser		ii  apg
| Status=Not/Inst/Conf- ii  adwaita-icon-theme	ii  app-install-data
|/ Err?=(none)/Reinst-r ii  adwaita-icon-theme- ii  apparmor
||/ Name		ii  alsa-base		ii  apt
+++-=================== ii  alsa-utils		ii  apt-clone
ii  accountsservice	ii  anacron		ii  apt-transport-https
ii  acl			ii  apache2		ii  apt-utils
ii  acpi-support	ii  apache2-bin		ii  apt-xapian-index
ii  acpid		ii  apache2-data	ii  aptdaemon
ii  add-apt-key		ii  apache2-utils	ii  aptdaemon-data


2017-01-06 13:19                                                  Page 2


ii  aptitude		ii  avahi-daemon	ii  bind9-host
ii  aptitude-common	ii  avahi-utils		ii  binfmt-support
ii  apturl		ii  aview		ii  binutils
ii  apturl-common	ii  banshee		ii  bison
ii  archdetect-deb	ii  baobab		ii  blt
ii  aspell		ii  base-files		ii  blueberry
ii  aspell-en		ii  base-passwd		ii  bluetooth
ii  at-spi2-core	ii  bash		ii  bluez
ii  attr		ii  bash-completion	ii  bluez-cups
ii  avahi-autoipd	ii  bc			ii  bluez-obexd

.....

Bu ýerde ulanylýan baýdaklar:

  1. - sütün çykyşda döredilen sütünleriň sanyny kesgitleýär.
  2. -l sahypanyň uzynlygyny kesgitleýär (deslapky 66 setir).

10. tr buýruk

Bu gural nyşanlary adaty girişden terjime edýär ýa-da pozýar we netijeleri adaty çykyşa ýazýar.

Tr ulanmagyň sintaksisi aşakdaky ýaly:

$ tr options set1 set2

Aşakdaky mysallara göz aýlaň, birinji buýrukda set1 ([: ýokarky:]) giriş nyşanlarynyň ýagdaýyny görkezýär (ähli baş harp).

Soňra set2 ([: aşaky:]) netije berýän nyşanlaryň ýagdaýyny görkezýär. Ikinji mysalda şol bir zat we gaçmagyň yzygiderliligi \n täze setirde çap edilmegini aňladýar:

[email  ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:]
linux-console.net

[email  ~ $ echo "news.linux-console.net" | tr [:lower:] [:upper:]
NEWS.TECMINT.COM

11. has köp buýruk

has köp buýruk, esasan şahadatnamany görmek üçin döredilen peýdaly faýl perusal süzgüçidir. Faýl mazmunyny format ýaly sahypada görkezýär, bu ýerde ulanyjylar has giňişleýin maglumat görmek üçin [Enter] basyp bilerler.

Munuň ýaly uly faýllary görmek üçin ulanyp bilersiňiz:

[email  ~ $ dmesg | more
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-21-generic ([email ) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
 4.4.6)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
[    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
--More--

12. az buýruk

az ýokardaky has köp buýrugyň tersi, ýöne goşmaça aýratynlyklary hödürleýär we uly faýllar bilen birneme çalt.

Ony beýlekiler ýaly ulanyň:

[email  ~ $ dmesg | less
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Initializing cgroup subsys cpuacct
[    0.000000] Linux version 4.4.0-21-generic ([email ) (gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2) ) #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic
 4.4.6)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro quiet splash vt.handoff=7
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Centaur CentaurHauls
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Supporting XSAVE feature 0x01: 'x87 floating point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x02: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x04: 'AVX registers'
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes, using 'standard' format.
[    0.000000] x86/fpu: Using 'eager' FPU context switches.
[    0.000000] e820: BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009d3ff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009d400-0x000000000009ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x00000000a56affff] usable
[    0.000000] BIOS-e820: [mem 0x00000000a56b0000-0x00000000a5eaffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000a5eb0000-0x00000000aaabefff] usable
:

Linux-da täsirli faýl nawigasiýasy üçin näme üçin “az” buýrukdan has çaltdygyny öwreniň.

Häzirlikçe, şu ýerde agzalmadyk, aşakdaky düşündiriş bölüminiň üsti bilen Linux-da tekst süzgüji hökmünde çykyş edýän peýdaly buýruk setir gurallary barada bize habar beriň.