12 hasznos parancs a szövegszűréshez a hatékony fájlműveletek érdekében Linux alatt
Ebben a cikkben áttekintünk néhány parancssori eszközt, amelyek szűrőként működnek a Linuxban. A szűrő egy olyan program, amely beolvassa a szabványos bemenetet, műveletet hajt végre rajta, és az eredményeket a szabványos kimenetre írja.
Emiatt hatékony módon használható információk feldolgozására, például a kimenet átstrukturálására hasznos jelentések generálására, a fájlok szövegének módosítására és sok más rendszeradminisztrációs feladatra.
Ezzel együtt az alábbiakban felsorolunk néhány hasznos fájl- vagy szövegszűrőt a Linuxban.
1. Awk Command
Az Awk egy figyelemre méltó mintaolvasó és -feldolgozó nyelv, amely hasznos szűrők létrehozására használható Linuxban. Elkezdheti használni, ha elolvassa az Awk sorozat 1. részétől 13. részéig.
Ezenkívül olvassa el az awk man oldalt további információkért és használati lehetőségekért:
man awk
2. Sed parancs
A sed egy hatékony adatfolyam-szerkesztő a szöveg szűrésére és átalakítására. Már írtunk két hasznos cikket a sed-ről, amelyeket itt olvashatsz:
- A GNU „sed” parancs használata fájlok létrehozására, szerkesztésére és manipulálására Linux alatt
- 15 hasznos „sed” parancstipp és trükk a napi Linux rendszerfelügyeleti feladatokhoz
A sed man oldal vezérlési opciókat és utasításokat tartalmaz:
man sed
3. Grep, Egrep, Fgrep, Rgrep parancsok
Ezek szűrik az adott mintának megfelelő kimeneti sorokat. Sorokat olvasnak be egy fájlból vagy szabványos bemenetről, és alapértelmezés szerint minden egyező sort kinyomtatnak a szabványos kimenetre.
Megjegyzés: A fő program a grep, a változatok egyszerűen megegyeznek az alábbi grep-beállításokkal (és továbbra is használatban vannak a visszafelé kompatibilitás érdekében):
egrep = grep -E
fgrep = grep -F
rgrep = grep -r
Az alábbiakban néhány alapvető grep-parancs található:
tecmint@TecMint ~ $ grep "aaronkilik" /etc/passwd
aaronkilik:x:1001:1001::/home/aaronkilik:
tecmint@TecMint ~ $ cat /etc/passwd | grep "aronkilik"
aaronkilik:x:1001:1001::/home/aaronkilik:
További információ a mi a különbség a Grep, az Egrep és az Fgrep között Linuxban?.
4. fej Parancs
A head a fájl első részeinek megjelenítésére szolgál, alapértelmezés szerint az első 10 sort adja ki. A -n
num jelzővel megadhatja a megjelenítendő sorok számát:
tecmint@TecMint ~ $ 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)
tecmint@TecMint ~ $ 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
Ismerje meg, hogyan használhatja a head parancsot a tail és cat parancsokkal a hatékony használat érdekében Linuxon.
5. farok Parancs
A farok a fájl utolsó részeit (alapértelmezés szerint 10 sort) adja ki. A -n
num kapcsolóval adja meg a megjelenítendő sorok számát.
Az alábbi parancs a megadott fájl utolsó 5 sorát adja ki:
tecmint@TecMint ~ $ 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.
Ezenkívül a tail rendelkezik egy speciális -f
opcióval, amellyel valós időben figyelheti meg a fájl változásait (különösen a naplófájlokat).
A következő paranccsal figyelheti a megadott fájl változásait:
tecmint@TecMint ~ $ 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.
Olvassa el a tail kézikönyvoldalt a használati lehetőségek és utasítások teljes listájáért:
man tail
6. sort Parancs
A rendezés egy szövegfájl sorainak rendezésére szolgál, vagy szabványos bemenetről.
Alább látható a domains.list nevű fájl tartalma:
tecmint@TecMint ~ $ 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
Futtathat egy egyszerű rendezési parancsot a fájl tartalmának rendezéséhez, például:
tecmint@TecMint ~ $ 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
A sort parancsot sokféleképpen használhatja, olvassa el a rendezési parancsról szóló hasznos cikkeket az alábbiak szerint:
- 14 hasznos példa a Linux „rendezési” parancsára – 1. rész
- 7 érdekes Linux „rendezési” parancspélda – 2. rész
- Fájlok keresése és rendezése a módosítás dátuma és időpontja alapján
- Az „ls” parancs kimenetének rendezése az utolsó módosítás dátuma és időpontja szerint
7. egyedi parancs
Az uniq parancs az ismétlődő sorok jelentésére vagy kihagyására szolgál, kiszűri a sorokat a szabványos bemenetről, és az eredményt a szabványos kimenetre írja.
A bemeneti adatfolyamon a rendezés futtatása után az alábbi példában látható módon eltávolíthatja az ismétlődő sorokat az uniq funkcióval.
Egy sor előfordulásának számának jelzéséhez használja a -c
kapcsolót, és az összehasonlítás során hagyja figyelmen kívül a különbségeket a -i
kapcsolóval:
tecmint@TecMint ~ $ cat domains.list
linux-console.net
linux-console.net
news.linux-console.net
news.linux-console.net
linuxsay.com
linuxsay.com
windowsmint.com
tecmint@TecMint ~ $ sort domains.list | uniq -c
2 linuxsay.com
2 news.linux-console.net
2 linux-console.net
1 windowsmint.com
Olvassa el az egyedi kézikönyvoldalt további használati információkért és jelzőkért:
man uniq
8. fmt parancs
Az fmt egyszerű, optimális szövegformázó: újraformázza a bekezdéseket egy megadott fájlban, és az eredményeket a szabványos kimenetre nyomtatja.
A következő a domain-list.txt fájlból kivont tartalom:
1.linux-console.net 2.news.linux-console.net 3.linuxsay.com 4.windowsmint.com
A fenti tartalom szabványos listává formázásához futtassa a következő parancsot a -w
kapcsolóval a maximális vonalszélesség meghatározásához:
tecmint@TecMint ~ $ cat domain-list.txt
1.linux-console.net 2.news.linux-console.net 3.linuxsay.com 4.windowsmint.com
tecmint@TecMint ~ $ fmt -w 1 domain-list.txt
1.linux-console.net
2.news.linux-console.net
3.linuxsay.com
4.windowsmint.com
9. pr Parancs
A pr parancs szöveges fájlokat vagy szabványos bemenetet konvertál a nyomtatáshoz. Például Debian rendszereken az összes telepített csomagot a következőképpen listázhatja:
dpkg -l
A lista nyomtatásra kész oldalakba és oszlopokba rendezéséhez adja ki a következő parancsot.
tecmint@TecMint ~ $ 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
.....
Az itt használt zászlók a következők:
- A
--oszlop
a kimenetben létrehozott oszlopok számát határozza meg. - A
-l
az oldal hosszát adja meg (az alapértelmezett 66 sor).
10. tr Parancs
Ez az eszköz lefordítja vagy törli a karaktereket a szabványos bemenetről, és az eredményeket szabványos kimenetre írja.
A tr használatának szintaxisa a következő:
tr options set1 set2
Vessen egy pillantást az alábbi példákra, az első parancsban a set1( [:upper:] )
a bemeneti karakterek kis- és nagybetűjét jelenti (minden nagybetű).
Ekkor a set2([:lower:])
azt az esetet jelöli, amelyben az eredményül kapott karakterek lesznek. Ugyanez a helyzet a második példában, és a \n
escape szekvencia egy új sorban történő nyomtatást jelenti:
tecmint@TecMint ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:]
linux-console.net
tecmint@TecMint ~ $ echo "news.linux-console.net" | tr [:lower:] [:upper:]
NEWS.TECMINT.COM
11. több Parancs
A more parancs egy hasznos fájlolvasó szűrő, amelyet alapvetően a tanúsítványok megtekintésére hoztak létre. A fájl tartalmat oldalszerű formátumban jeleníti meg, ahol a felhasználók az [Enter] megnyomásával további információkat tekinthetnek meg.
Használhatja nagy fájlok megtekintéséhez, például:
tecmint@TecMint ~ $ 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 (buildd@lgw01-21) (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. kevesebb Parancs
A less a fenti more parancs ellentéte, de extra funkciókat kínál, és egy kicsit gyorsabb a nagy fájlokkal.
Használja ugyanúgy, mint a többit:
tecmint@TecMint ~ $ 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 (buildd@lgw01-21) (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
:
Ismerje meg, miért gyorsabb a „kevesebb”, mint a „több” parancs a hatékony fájlnavigáció érdekében Linux alatt.
Egyelőre ennyi, tájékoztasson minket az itt nem említett hasznos parancssori eszközökről, amelyek szövegszűrőként működnek a Linuxban az alábbi megjegyzés részben.