12 Mapuslanon nga mga Sugo Alang sa Pagsala sa Teksto alang sa Epektibo nga Operasyon sa File sa Linux


Niini nga artikulo, atong susihon ang daghang mga himan sa command line nga naglihok isip mga filter sa Linux. Ang filter usa ka programa nga nagbasa sa standard input, nagpahigayon ug operasyon niini ug nagsulat sa mga resulta sa standard output.

Tungod niini nga rason, kini mahimong gamiton sa pagproseso sa impormasyon sa gamhanan nga mga paagi sama sa restructuring output aron makamugna mapuslanon nga mga taho, pag-usab sa teksto sa mga file ug daghan pang ubang mga buluhaton sa pagdumala sa sistema.

Uban niana nga giingon, sa ubos mao ang pipila sa mga mapuslanon nga file o text filter sa Linux.

1. Awk Sugo

Ang Awk usa ka talagsaon nga pattern sa pag-scan ug pagproseso nga pinulongan, kini magamit sa paghimo og mapuslanon nga mga pagsala sa Linux. Mahimo nimong sugdan ang paggamit niini pinaagi sa pagbasa sa among serye sa Awk Bahin 1 hangtod Bahin 13.

Dugang pa, basaha usab ang awk man page alang sa dugang nga impormasyon ug mga kapilian sa paggamit:

$ man awk

2. Sed Command

Ang sed usa ka kusgan nga editor sa stream alang sa pagsala ug pagbag-o sa teksto. Nakasulat na kami ug duha ka mapuslanong artikulo bahin sa sed, nga mahimo nimong maagian dinhi:

  1. Unsaon paggamit sa GNU 'sed' Command sa Paghimo, Pag-edit, ug Pagmaniobra sa mga file sa Linux
  2. 15 Mapuslanon nga 'sed' Command Tips ug Tricks para sa Adlaw-adlaw nga Linux System Administration Tasks

Ang sed man page adunay dugang nga mga opsyon sa pagkontrol ug mga instruksyon:

$ man sed

3. Grep, Egrep, Fgrep, Rgrep Mga Sugo

Kini nga mga filter nga mga linya sa output nga katumbas sa gihatag nga sumbanan. Gibasa nila ang mga linya gikan sa usa ka file o standard nga input, ug gi-print ang tanan nga magkatugma nga linya pinaagi sa default sa standard nga output.

Mubo nga sulat: Ang nag-unang programa naggamit sa piho nga mga kapilian sa grep sama sa ubos (ug kini gigamit gihapon alang sa atras nga pagkaangay):

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

Sa ubos mao ang pipila ka mga batakang grep nga mga sugo:

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

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

Mahimo nimong mabasa ang dugang bahin sa Unsa ang Kalainan Tali sa Grep, Egrep ug Fgrep sa Linux?.

4. ulo Sugo

ulo gigamit sa pagpakita sa unang mga bahin sa usa ka file, kini output sa unang 10 ka linya sa default. Mahimo nimong gamiton ang -n num flag aron itakda ang gidaghanon sa mga linya nga ipakita:

[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

Pagkat-on unsaon paggamit ang head command nga adunay mga ikog ug iring nga mga sugo alang sa epektibong paggamit sa Linux.

5. ikog Command

ikog output sa katapusan nga mga bahin (10 ka linya sa default) sa usa ka file. Gamita ang -n num switch aron itakda ang gidaghanon sa mga linya nga ipakita.

Ang sugo sa ubos magpagawas sa katapusang 5 ka linya sa gipiho nga file:

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

Dugang pa, ang ikog adunay espesyal nga kapilian -f alang sa pagtan-aw sa mga pagbag-o sa usa ka file sa tinuud nga oras (labi na ang mga file sa log).

Ang mosunod nga sugo makapahimo kanimo sa pagmonitor sa mga kausaban sa gitakda nga file:

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

Basaha ang panid sa ikog nga tawo alang sa usa ka kompleto nga lista sa mga kapilian sa paggamit ug mga panudlo:

$ man tail

6. matang Sugo

Ang sort gigamit sa paghan-ay sa mga linya sa usa ka text file o gikan sa standard input.

Sa ubos mao ang sulod sa usa ka file nga ginganlan og domains.list:

[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

Mahimo nimong ipadagan ang usa ka yano nga pagsunud nga mando aron maihap ang sulud sa file sama sa:

[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

Mahimo nimong gamiton ang sort command sa daghang paagi, adto sa pipila ka mapuslanong artikulo sa sort command sama sa mosunod:

  1. 14 Mapuslanon nga mga Ehemplo sa Linux 'sort' Command - Bahin 1
  2. 7 Makaiikag nga Linux 'sort' nga mga Ehemplo sa Command - Bahin 2
  3. Unsaon Pagpangita ug Pag-sort sa mga File Base sa Petsa ug Oras sa Pagbag-o
  4. Unsaon Pag-sort sa Output sa 'ls' Command Pinaagi sa Katapusang Gibag-o nga Petsa ug Oras

7. uniq Sugo

Ang uniq command gigamit sa pagreport o pagtangtang sa mga balikbalik nga linya, gisala niini ang mga linya gikan sa standard input ug isulat ang resulta sa standard output.

Human sa pagpadagan sa sort sa usa ka input stream, mahimo nimong tangtangon ang balik-balik nga linya nga adunay uniq sama sa pananglitan sa ubos.

Aron ipakita ang gidaghanon sa mga panghitabo sa usa ka linya, gamita ang -c nga opsyon ug ibaliwala ang mga kalainan sa kaso samtang nagtandi pinaagi sa paglakip sa -i nga opsyon:

[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 

Basaha ang uniq man page para sa dugang nga impormasyon sa paggamit ug mga bandera:

$ man uniq

8. fmt Sugo

fmt simple nga labing maayo nga text formatter, kini nag-reformat sa mga paragraph sa espesipikong file ug nag-imprinta sa mga resulta ngadto sa standard nga output.

Ang mosunod mao ang sulod nga gikuha gikan sa file domain-list.txt:

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

Aron i-reformat ang naa sa ibabaw nga sulod ngadto sa usa ka standard nga lista, padagana ang mosunod nga command gamit ang -w switch kay gigamit sa paghubit sa maximum line width:

[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 Sugo

Ang pr command nag-convert sa mga text file o standard input alang sa pag-imprinta. Pananglitan sa mga sistema sa Debian, mahimo nimong ilista ang tanan nga na-install nga mga pakete sama sa mosunod:

$ dpkg -l

Aron maorganisar ang listahan sa mga panid ug mga kolum nga andam na sa pag-imprinta, i-isyu ang mosunod nga sugo.

[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

.....

Ang mga bandera nga gigamit dinhi mao ang:

  1. --column naghubit sa gidaghanon sa mga column nga gihimo sa output.
  2. Ang
  3. -l nagtino sa gitas-on sa panid (ang default kay 66 ka linya).

10. tr Sugo

Kini nga himan naghubad o nagtangtang sa mga karakter gikan sa standard input ug nagsulat sa mga resulta ngadto sa standard nga output.

Ang syntax sa paggamit sa tr mao ang mosunod:

$ tr options set1 set2

Tan-awa ang mga pananglitan sa ubos, sa unang sugo, set1( [:upper:] ) nagrepresentar sa kaso sa input nga mga karakter (tanan uppercase).

Unya set2([:lower:]) nagrepresentar sa kaso diin ang resulta nga mga karakter. Parehas kini nga butang sa ikaduhang pananglitan ug ang pagkasunod-sunod sa pag-ikyas \n nagpasabut sa pag-print nga output sa usa ka bag-ong linya:

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

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

11. dugang Sugo

Ang dugang nga sugo usa ka mapuslanon nga file perusal filter nga gimugna alang sa pagtan-aw sa sertipiko. Nagpakita kini sa sulud sa file sa usa ka panid sama sa format, diin ang mga tiggamit makapadayon sa [Enter] aron makita ang dugang nga kasayuran.

Mahimo nimong gamiton kini aron makita ang dagkong mga file sama sa:

[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. dili kaayo Sugo

dili kaayo ang kaatbang sa daghang mga sugo sa ibabaw apan kini nagtanyag dugang nga mga bahin ug kini usa ka gamay nga mas paspas sa dagkong mga file.

Gamita kini sa samang paagi sama sa daghan pa:

[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
:

Hibal-i Ngano nga ang 'dili kaayo' mas paspas kaysa sa 'labi pa' nga Command alang sa epektibo nga pag-navigate sa file sa Linux.

Kana lang sa pagkakaron, ipahibalo kanamo ang bisan unsang mapuslanon nga mga himan sa command line nga wala gihisgutan dinhi, nga naglihok isip usa ka text filter sa Linux pinaagi sa comment section sa ubos.