GNU/Linux >> Znalost Linux >  >> Linux

Počítat záznamy odpovídající vzoru s Awk?

Bylo mi tedy řečeno, abych udělal last > lastloggedin který vytvoří soubor, který ukazuje poslední přihlášení tříd od posledního restartu systému, a nyní jsem požádán, abych napsal skript Awk, který se jmenuje myawk který počítá/určuje, kolik řádků lastloggedin obsahovat řetězec CFS264 .

Provedl jsem grep -c CFS264 lastloggedin

Přijatá odpověď:

Chcete-li začít, můžete použít awk pro vyhledání řádků v souboru, který obsahuje řetězec jako je tento:

$ awk '/CFS264/ { .... }' lastloggedin

Bity v { .... } budou příkazy potřebné k sečtení počtu řádků s tímto řetězcem. Pro potvrzení, že výše uvedené funguje, můžete použít print $0 tam jednoduše vytisknete ty řádky, které obsahují hledaný řetězec.

$ awk '/CFS264/ { print $0 }' lastloggedin

Pokud jde o počítání, pokud hledáte „awk counter“, narazíte na tento SO Q&A s názvem:pomocí awk počítejte žádné záznamy. Pro to, co popisujete, by stačila metoda, která je zde uvedena:

$ awk '/CFS264/ {count++} END{print count}' lastloggedin

Příklad

$ last > lastloggedin

$ awk '/slm/ {count++} END {print count}' lastloggedin 
758

$ grep slm lastloggedin  | wc -l
758

$ grep -c slm lastloggedin
758

POZNÁMKA: V last neuvádíte, ke kterému poli CFS264 patří výstup. Za předpokladu, že se jedná o uživatelské jméno, můžete awk dále omezit příkaz k vyhledání pouze tohoto pole takto:

$ awk '$1=="CFS264" { print $0 }' lastloggedin

Linux
  1. Počítat počet vzorů shodných v editoru vim

  2. Zachyťte skupiny pomocí Awk nebo Grep?

  3. Pole AWK vysvětleno na 5 praktických příkladech

  1. Funkce Bash pro nalezení nejnovějšího vzoru pro shodu souborů

  2. pomocí awk s podmínkami hodnoty sloupce

  3. Porovnávání vzorů skriptů Bash

  1. Začínáme s awk, výkonným nástrojem pro analýzu textu

  2. Jak odečíst řádky (řádky) pomocí AWK

  3. Najít soubor odpovídající určitému vzoru a dát tomuto názvu souboru jako hodnotu proměnné ve skriptu shellu?