GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak najít pouze konkrétní klíčové slovo v této smyčce Zcat?

Toto jsem napsal a očekávalo se, že dostanu pouze protokol uživatele v "" . Ale mám na serveru celé logy:

for i in `ls *.log.gz`; do zcat $i |  grep "U2779897722719715411" >> sara.log;  done ; *

Co bych měl v této smyčce změnit, abych našel pouze protokol s tímto klíčovým slovem?

Děkuji.

Přijatá odpověď:

zgrep příkaz je velmi užitečný pro grepování v komprimovaných souborech a vyhýbá se tomu, abyste museli předávat zcat na grep . Také nemusíte používat smyčku for k vytvoření seznamu souborů pomocí globbingu (shoda vzoru shellu).

zgrep U2779897722719715411 *.log.gz >> sara.log

Tento příkaz vypíše název souboru a řádek obsahující U2779897722719715411 oddělené znakem : postava.

Pokud nechcete předponu souboru, můžete použít -h možnost zgrep :

zgrep -h U2779897722719715411 *.log.gz >> sara.log

Toho lze také dosáhnout pomocí smyčky, ale vyhněte se použití ls a po dokončení smyčky proveďte přesměrování do souboru:

for i in *.log.gz ; do zgrep U2779897722719715411 "$i" ; done >> sara.log

Případně, pokud chcete pouze názvy souborů, které obsahují tento uživatelský řetězec U2779897722719715411, můžete použít -l možnost zgrep v některém z výše uvedených příkazů:

zgrep -l U2779897722719715411 *.log.gz >> sara.log

nebo

for i in *.log.gz ; do zgrep -l U2779897722719715411 "$i" ; done >> sara.log

Ubuntu
  1. Jak přemapovat klávesu Numlock, aby byla smazána?

  2. CentOS / RHEL 7 :Jak zakázat IPv6 pouze na konkrétním rozhraní

  3. Jak povolit pouze konkrétním uživatelům bez oprávnění root používat crontab

  1. Použijte příkaz SED k vyhledání a nahrazení řetězce v souborech – Jak provést tento úkol na Ubuntu?

  2. Jak gzipovat všechny nebo konkrétní soubory v Linuxu

  3. Jak smazat soubor s tímto názvem na linuxu:-]???????q

  1. Jak vyhledávat v konkrétních souborech odpovídajících vzoru?

  2. Jak najít konkrétní text pomocí GREP v systému Linux

  3. Jak najdu svou IP adresu v Ubuntu