GNU/Linux >> Znalost Linux >  >> Linux

12 Užitečné příkazy pro filtrování textu pro efektivní operace se soubory v Linuxu

V tomto článku se podíváme na řadu nástrojů příkazového řádku, které v Linuxu fungují jako filtry. filtr je program, který čte standardní vstup, provádí na něm operaci a zapisuje výsledky na standardní výstup.

Z tohoto důvodu jej lze použít ke zpracování informací účinnými způsoby, jako je restrukturalizace výstupu za účelem generování užitečných zpráv, úprava textu v souborech a mnoho dalších úloh správy systému.

Níže jsou uvedeny některé z užitečných souborových nebo textových filtrů v Linuxu.

1. Příkaz Awk

Awk je pozoruhodný jazyk pro skenování a zpracování vzorů, lze jej použít k vytváření užitečných filtrů v Linuxu. Můžete ji začít používat přečtením naší série Awk od 1. do 13. části.

Kromě toho si také přečtěte awk manuálová stránka pro další informace a možnosti použití:

$ man awk

2. Příkaz Sed

sed je výkonný stream editor pro filtrování a transformaci textu. Již jsme napsali dva užitečné články o sed, které si můžete projít zde:

  1. Jak používat příkaz GNU ‚sed‘ k vytváření, úpravám a manipulaci se soubory v systému Linux
  2. 15 užitečných tipů a triků k příkazům „sed“ pro každodenní úlohy správy systému Linux

Manová stránka sed má přidané možnosti ovládání a pokyny:

$ muž sed

3. Příkazy Grep, Egrep, Fgrep, Rgrep

Tyto filtry vystupují řádky odpovídající danému vzoru. Čtou řádky ze souboru nebo standardního vstupu a všechny odpovídající řádky standardně tisknou na standardní výstup.

Poznámka :Hlavním programem je grep, varianty jsou jednoduše stejné jako použití konkrétních možností grep, jak je uvedeno níže (a stále se používají pro zpětnou kompatibilitu):

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

Níže jsou uvedeny některé základní příkazy grep:

[chráněno e-mailem] ~ $ grep "aaronkilik" /etc/passwdaaronkilik:x:1001:1001::/home/aaronkilik: [chráněno e-mailem] ~ $ cat /etc/passwd | grep "aronkilik"aaronkilik:x:1001:1001::/home/aaronkilik: 

Můžete si přečíst více o tom, jaký je rozdíl mezi Grep, Egrep a Fgrep v Linuxu?.

4. Head Command

hlava se používá k zobrazení prvních částí souboru, výstupem je prvních 10 linky ve výchozím nastavení. Můžete použít -n příznak num k určení počtu řádků, které se mají zobrazit:

[chráněno e-mailem] ~ $ head /var/log/auth.log 2. ledna 10:45:01 TecMint CRON[3383]:pam_unix(cron:session):relace otevřena pro uživatele root uživatelem (uid=0) 2. ledna 10:45:01 TecMint CRON[3383]:pam_unix(cron:session) :relace uzavřena pro uživatele rootJan 2 10:51:34 TecMint sudo:tecmint :TTY=unknown; PWD=/home/tecmint; USER=root; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.pyJan 2 10:51:34 TecMint sudo:pam_unix(sudo:session):relace otevřena pro uživatele root (uid=0)ledna 2 10:51:39 TecMint sudo :pam_unix(sudo:session):relace uzavřena pro uživatele rootJan 2 10:55:01 TecMint CRON[4099]:pam_unix(cron:session):relace otevřena pro uživatele root (uid=0)ledna 2 10:55:01 TecMint CRON[4099]:pam_unix(cron:session):relace uzavřena pro uživatele rootJan 2 11:05:01 TecMint CRON[4138]:pam_unix(cron:session):relace otevřena pro uživatele root (uid=0)ledna 2 11:05:01 TecMint CRON[4138]:pam_unix(cron:session):relace uzavřena pro uživatele rootJan 2 11:09:01 TecMint CRON[4146]:pam_unix(cron:session):relace otevřena pro uživatele root uživatelem (uid =0)[e-mail chráněný] ~ $ head -n 5 /var/log/auth.log 2. ledna 10:45:01 TecMint CRON[3383]:pam_unix(cron:session):relace otevřena pro uživatele root uživatelem (uid=0) 2. ledna 10:45:01 TecMint CRON[3383]:pam_unix(cron:session) :relace uzavřena pro uživatele rootJan 2 10:51:34 TecMint sudo:tecmint :TTY=unknown; PWD=/home/tecmint; USER=root; COMMAND=/usr/lib/linuxmint/mintUpdate/checkAPT.pyJan 2 10:51:34 TecMint sudo:pam_unix(sudo:session):relace otevřena pro uživatele root (uid=0)ledna 2 10:51:39 TecMint sudo :pam_unix(sudo:session):relace uzavřena pro uživatele root

Naučte se používat příkaz head s příkazy tail a cat pro efektivní použití v Linuxu.

5. Příkaz ocas

ocas vypíše poslední části (10 řádků ve výchozím nastavení) souboru. Použijte -n num přepínač k určení počtu řádků, které se mají zobrazit.

Následující příkaz vypíše posledních 5 řádky zadaného souboru:

[chráněno e-mailem] ~ $ tail -n 5 /var/log/auth.log 6. ledna 13:01:27 TecMint sshd[1269]:Server naslouchá na portu 0.0.0.0 22. ledna 6 13:01:27 TecMint sshd[1269]:Server naslouchá na portu ::22. ledna 6 13:01:27 TecMint sshd[1269]:Přijato SIGHUP; restartování. 6. ledna 13:01:27 TecMint sshd[1269]:Server naslouchající na portu 0.0.0.0 22. ledna 13:01:27 TecMint sshd[1269]:Server naslouchající na portu 22.

Navíc ocas má speciální volbu -f pro sledování změn v souboru v reálném čase (zejména soubory protokolu).

Následující příkaz vám umožní sledovat změny v zadaném souboru:

[chráněno e-mailem] ~ $ tail -f /var/log/auth.log 6. ledna 12:58:01 TecMint sshd[1269]:Server naslouchá na ::portu 22. ledna 12:58:11 TecMint sshd[1269]:Přijato SIGHUP; restartování. 6. ledna 12:58:12 TecMint sshd[1269]:Server naslouchá na portu 0.0.0.0 22. 6. ledna 12:58:12 TecMint sshd[1269]:Server naslouchá na portu ::22. 6. ledna 13:01 :27 TecMint sshd[1269]:Přijato SIGHUP; restartování. 6. ledna 13:01:27 TecMint sshd[1269]:Server naslouchá na portu 0.0.0.0 22. 6. ledna 13:01:27 TecMint sshd[1269]:Server naslouchá na portu ::22. 6. ledna 13:01 :27 TecMint sshd[1269]:Přijato SIGHUP; restartování. 6. ledna 13:01:27 TecMint sshd[1269]:Server naslouchající na portu 0.0.0.0 22. ledna 13:01:27 TecMint sshd[1269]:Server naslouchající na portu 22.

Přečtěte si ocas manuálová stránka pro úplný seznam možností použití a pokynů:

$ mužský ocas

6. příkaz řazení

řadit se používá k řazení řádků textového souboru nebo ze standardního vstupu.

Níže je uveden obsah souboru s názvem domains.list :

[chráněno e-mailem] ~ $ kočičí domains.list tecmint.comtecmint.comnews.tecmint.comnews.tecmint.comlinuxsay.comlinuxsay.comwindowsmint.comwindowsmint.com

Můžete spustit jednoduchý příkaz řazení a seřadit obsah souboru takto:

[chráněno e-mailem] ~ $ seřadit seznam domén. linuxsay.comlinuxsay.comnews.tecmint.comnews.tecmint.comtecmint.comtecmint.comwindowsmint.comwindowsmint.com

Můžete použít řazení příkazem v mnoha ohledech, projděte si některé užitečné články o příkazu sort takto:

  1. 14 užitečných příkladů příkazu „sort“ systému Linux – část 1
  2. 7 zajímavých příkladů příkazů „sort“ v Linuxu – část 2
  3. Jak najít a seřadit soubory podle data a času úpravy
  4. Jak seřadit výstup příkazu „ls“ podle data a času poslední úpravy

7. příkaz uniq

jedinečné příkaz se používá k nahlášení nebo vynechání opakovaných řádků, filtruje řádky ze standardního vstupu a zapisuje výsledek na standardní výstup.

Po spuštění řazení ve vstupním proudu můžete odstranit opakované řádky pomocí uniq jako v příkladu níže.

K označení počtu výskytů řádku použijte -c a ignorujte rozdíly v malých a velkých písmenech při porovnávání přidáním -i možnost:

[chráněno e-mailem] ~ $ kočičí domains.list tecmint.comtecmint.comnews.tecmint.comnews.tecmint.comlinuxsay.comlinuxsay.comwindowsmint.com[e-mail chráněný] ~ $ třídění domén.seznam | uniq -c 2 linuxsay.com2 news.tecmint.com2 tecmint.com1 windowsmint.com 

Přečtěte si unikátní manuálová stránka pro další informace o použití a příznaky:

$ man uniq

8. Příkaz fmt

fmt jednoduchý optimální formátovač textu, přeformátuje odstavce v určeném souboru a vytiskne výsledky na standardní výstup.

Níže je uveden obsah extrahovaný ze souboru seznam-domén.txt :

1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com

Chcete-li přeformátovat výše uvedený obsah na standardní seznam, spusťte následující příkaz s -w přepínač se používá k definování maximální šířky řádku:

tecmint[chráněno e-mailem] ~ $ cat domain-list.txt 1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com[e-mail chráněný] ~ $ fmt -w 1 domain-list.txt 1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com

9. Příkaz pr

pr příkaz převede textové soubory nebo standardní vstup pro tisk. Například v Debianu systémy, můžete vypsat všechny nainstalované balíčky následovně:

$ dpkg -l

Chcete-li seznam uspořádat do stránek a sloupců připravených k tisku, zadejte následující příkaz.

[chráněno e-mailem] ~ $ dpkg -l | pr --sloupce 3 -l 20 2017-01-06 13:19 Stránka 1Desired=Neznámý/Instalovat 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-cloneii accountsservice ii anacron ii apt-transport-httpsii acl ii apache2 ii apt-utilsii acpi-support ii apache2 -bin ii apt-xapian-indexii acpid ii apache2-data ii aptdaemonii add-apt-key ii apache2-utils ii aptdaemon-data2017-01-06 13:19 Page 2ii aptitude ii avahi-daemon ii bind9-hostii aptitude avahi-utils ii binfmt-supportii apturl ii aview ii binutilsii apturl-common ii banshee ii bisonii archdetect-deb ii baobab ii bltii aspell ii base-files ii blueberryii aspell-en ii base-passwd atii-core bluetoothii bluezii attr ii bash-completion ii bluez-cupsii avahi-autoipd ii bc ii bluez-obexd.....

Zde použité příznaky jsou:

  1. --column definuje počet sloupců vytvořených ve výstupu.
  2. -l určuje délku stránky (výchozí je 66 řádků).

10. Příkaz tr

Tento nástroj překládá nebo odstraňuje znaky ze standardního vstupu a zapisuje výsledky na standardní výstup.

Syntaxe pro použití tr je následující:

$ tr options set1 set2

Podívejte se na příklady níže v prvním příkazu set1( [:upper:] ) představuje velká a malá písmena vstupních znaků (všechna velká).

Poté set2([:lower:]) představuje případ, ve kterém budou výsledné znaky. Je to totéž v druhém příkladu a escape sekvenci \n znamená tiskový výstup na nový řádek:

[chráněno e-mailem] ~ $ echo "WWW.TECMINT.COM" | tr [:upper:] [:lower:] www.tecmint.com[chráněno e-mailem] ~ $ echo "news.tecmint.com" | tr [:lower:] [:upper:] NEWS.TECMINT.COM

11. další příkaz

více je užitečný filtr pro prohlížení souborů vytvořený v podstatě pro prohlížení certifikátů. Zobrazuje obsah souboru ve formátu podobném stránce, kde uživatelé mohou stisknout [Enter] zobrazíte další informace.

Můžete jej použít k prohlížení velkých souborů, jako například:

[chráněno e-mailem] ~ $ dmesg | více [ 0,000000] Inicializace cgroup subsys cpuset[ 0,000000] Inicializace cgroup subsys cpu[ 0,000000] Inicializace cgroup subsys cpuacct[ 0,000000] Linux verze 4.4.0-21-generic ([Email 160451.protected version. 1-14ubuntu2) ) #37-Ubuntu SMP Po 18. duben 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic 4.4.6)[ 0.000000] Příkazový řádek:BOOT_IMAGE=/uz-4.v 21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro tichý splash vt.handoff=7[ 0,000000] CPU podporovaný KERNEL:[ 0,000000] Intel GenuineIntelH0000000000.000 Intel GenuineIntelH00000.000.000.000 Intel GenuineIntel H00000.000.000. /fpu:xstate_offset[2]:576, xstate_sizes[2]:256[ 0,000000] x86/fpu:Podpora funkce XSAVE 0x01:'x87 registry s pohyblivou řádovou čárkou'[ 0,000000] x86/fpu:Podpora funkce XSSE2AVE:'0x02SAVE [ 0,000000] x86/fpu:Podpora funkce XSAVE 0x04:'AVX registry'[ 0,000000] x86/fpu:Povolené funkce xstate 0x7, velikost kontextu je 832 bajtů s, používající „standardní“ formát.[ 0.000000] x86/fpu:Používání „eager“ kontextových přepínačů FPU.[ 0.000000] e820:BIOSem poskytnutá fyzická mapa RAM:[ 0.000000] BIOS-e820:[mem 0x0000000000000000000000000000000000000000000000000000000 0,000000] BIOS-E820:[MEM 0x000000000009D400-0X0000000009FFFF] Vyhrazeno [0,000000] BIOS-E820:[MEM 0x00000000100 000] BIOS-E820:[MEM 0X0000000000100 000] [ 0x00000000a56b0000-0x00000000a5eaffff] vyhrazeno[ 0,000000] BIOS-e820:[mem 0x00000000a5eb0000-0x00000000aaabefff-More->strong>Více použitelné 

12. méně příkaz

méně je opakem více výše, ale nabízí další funkce a je o něco rychlejší s velkými soubory.

Použijte jej stejným způsobem jako další:

[chráněno e-mailem] ~ $ dmesg | méně [ 0,000000] Inicializace cgroup subsys cpuset[ 0,000000] Inicializace cgroup subsys cpu[ 0,000000] Inicializace cgroup subsys cpuacct[ 0,000000] Linux verze 4.4.0-21-generic ([Email 160451.protected version. 1-14ubuntu2) ) #37-Ubuntu SMP Po 18. duben 18:33:37 UTC 2016 (Ubuntu 4.4.0-21.37-generic 4.4.6)[ 0.000000] Příkazový řádek:BOOT_IMAGE=/uz-4.v 21-generic root=UUID=bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b ro tichý splash vt.handoff=7[ 0,000000] CPU podporovaný KERNEL:[ 0,000000] Intel GenuineIntelH0000000000.000 Intel GenuineIntelH00000.000.000.000 Intel GenuineIntel H00000.000.000. /fpu:xstate_offset[2]:576, xstate_sizes[2]:256[ 0,000000] x86/fpu:Podpora funkce XSAVE 0x01:'x87 registry s pohyblivou řádovou čárkou'[ 0,000000] x86/fpu:Podpora funkce XSSE2AVE:'0x02SAVE [ 0,000000] x86/fpu:Podpora funkce XSAVE 0x04:'AVX registry'[ 0,000000] x86/fpu:Povolené funkce xstate 0x7, velikost kontextu je 832 bajtů s, používající „standardní“ formát.[ 0.000000] x86/fpu:Používání „eager“ kontextových přepínačů FPU.[ 0.000000] e820:BIOSem poskytnutá fyzická mapa RAM:[ 0.000000] BIOS-e820:[mem 0x0000000000000000000000000000000000000000000000000000000 0,000000] BIOS-E820:[MEM 0x000000000009D400-0X0000000009FFFF] Vyhrazeno [0,000000] BIOS-E820:[MEM 0x00000000100 000] BIOS-E820:[MEM 0X0000000000100 000] [ 0x00000000a56b0000-0x00000000a5eaffff] vyhrazeno[ 0,000000] BIOS-e820:[mem 0x00000000a5eb0000-0x00000000aaabefff>] použitelné:

Přečtěte si, proč je příkaz „méně“ rychlejší než příkaz „více“ pro efektivní navigaci v souborech v systému Linux.

To je prozatím vše, dejte nám vědět o jakýchkoli užitečných nástrojích příkazového řádku, které zde nejsou uvedeny a které fungují jako textové filtry v Linuxu, prostřednictvím sekce komentářů níže.


Linux
  1. 8 Linuxových příkazů pro efektivní řízení procesů

  2. 10 Linuxových příkazů pro diagnostiku sítě

  3. 3 nezbytné linuxové příkazy pro manipulaci s textem

  1. Příkazy FreeDOS pro fanoušky Linuxu

  2. 3 Užitečné Linuxové příkazy pro systémové administrátory

  3. Může být příkaz linux cat použit pro zápis textu do souboru?

  1. 5 užitečných příkazů pro správu typů souborů a systémového času v Linuxu – část 3

  2. 5 obskurních, ale užitečných linuxových příkazů pro systémové správce

  3. 8 základních příkazů pro navigaci souborů Linux pro nové uživatele