Denne linje bliver vist fordi den slutter med rs Brug ark med (\) Meta tegn Dette bruges til at beskrive hvadawk
Brug
mønster scanning og tekst behandling sprog.
Parametre
-f læs AWK program fra fil.
-S Kør i sandbox. Du kan ikke udføre system() samt redirect er disabled.
–help
Samt mange flere.
Eksempler
$ awk
Hvordan bruger man awk til at filtre tekst i filer. Når du køre komandoer en Linux shell til at få tekst ud fra en fil, er det mest fordi vi vil se om filen indenholder en bestemt tekst af en art. Dette er muligt en komandoen awk. awk er IKKE en bash komando men en gnu kommando. Som har nogle rigtig smarte muligheder for at lave filter på data i filer. Et regulære udtryk er en måde at beskrive hvordan filteret skal virke. Muligheder.
(.)
det it matcher alle normale tegn på nær ny linje.(*)
det matcher ingen eller flere tegn af samme type[ character(s) ]
it matches any one of the characters specified in character(s), one can also use a hyphen (-) to mean a range of characters such as [a-f], [1-5], and so on.^
matcher begyndelse af linjerne i filen.$
matcher slutningen af linjerne i filen.\
escape tegn.
Den generalle syntax for awk er:
# awk ‘script’ filnavn ‘script’ er et kommando set som forstås af awk og bliver udført på filen som angives. Det virker på den måde at den laver en kopi af hver linje i filen og udføre scriptet kommandoerne og udlæser resultatet igen gemmen stdio. Dette gentages gemmen hele filen. I dette eksempel bruger vi formen ‘/søgefter/’ typen. Hvor søgefter er det regulære udtryk som vi skal finde. Her udskrives alle linjer fra filen, da der ikke er givet noget regulært udtryk.
$ awk '//{print}' /etc/hosts 127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
I dette eksempel søges der efter localhost så awk vil udskrive alle linjer som indenholder ordret localhost fra /etc/hosts filen.
$ awk '/localhost/{print}' /etc/hosts 127.0.0.1 localhost ::1 ip6-localhost ip6-loopback
Brug ark og søg efter mønster. Den (.) Vil matche strenge indeholder loc , localhost i eksemplet nedenfor.
$ awk '/l.c/{print}' /etc/hosts 127.0.0.1 localhost ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet
$ awk '/l*c/{print}' /etc/localhost 127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix
Brug ark til at finde set af tegn. [] Dette eksempel [al1] vil ark matche alle tekster med disse tegn a eller l eller 1 i filen /etc/hosts
$ awk '/[al1]/{print}' /etc/hosts 127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Dette eksempel matcher vi tekst som starter med K eller k efterfulgt af tegnet T
$ awk '/[Kk]T/{print}' /etc/hosts 192.168.3.5 KTech-lab
Du kan også specificere en range af tegn. Ark forstår disse typer.
[0-9]<(code> et enkelt nummer.
[a-z] Et enkelt tegn.
[A-Z] Et enkelt stort tegn.
[a-zA-Z] Et enkelt tegn lille eller stort.
[a-zA-Z 0-9] Et enkelt tegn eller nummer.
Her er nogle eksempler.
$ awk '/[0-9]/{print}' /etc/hosts 127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Alle disse linjer bliver vist fordi de indeholder mindst et tal i dette eksempel
$ awk '/[0-2]/{print}' /etc/hosts 127.0.0.1 localhost ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Alle disse linjer bliver vist fordi de indeholder tal mellem 0 og 2.
Brug ark med (^) Meta Character til at finde tekst som matcher begyndelse af linjerne i filen.
$ awk '/^fe/{print}' /etc/hosts
fe00::0 ip6-localnet
Denne linje bliver vist fordi den starter med fe
$ awk '/^ff/{print}' /etc/hosts
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Brug ark med ($) Meta Character til at finde tekst som matcher slutningen af linjerne i filen. Det matcher alle linjer som ender med det vi søger efter.
$ awk '/rs$/{print}' /etc/hosts
ff02::2 ip6-allrouters