Regex

Vi kan även använda reguljära uttryck för att filtrera datan innan vi behandlar den.

#Matchning

Vi kör vidare med telefonfilen. Låt säga att vi bara vill skriva ut raderna där strängen pp finns med:

#!/usr/bin/env awk

{
    if ($0 ~ /pp/) {
        print $0
    }
}

Villkoret $0 ~ /pp/ jämför hela raden mot bokstäverna pp. Vi hade kunnat vända på det med $0 !~ /pp/.

Från kommandoraden hade uttrycket skrivits $ awk '/pp/' phones.txt.

#match()

Det finns en inbyggd funktion som hjälper oss att jobba med regex, match(). Vi tittar på ett exempel:

#!/usr/bin/env awk

BEGIN {
    FS=","
}
{
    ans = match($2, /[a-z][[:digit:]]/)

    if (ans) {
        print $2
    }
}

Här väljer vi ut de telefoner där modellnamnet har en liten bokstav följt av en siffra. Svaret blir:

$ awk -f phones.awk phones.txt
Galaxy Note20

#Revision history

  • 2020-02-10: (A, lew) Första versionen.

Document source.