/ 3 minutters læsning
awk er et genialt værktøj til filtrering, udtræk og manipulation af tekst. Lær hvordan du bruger det her på min blog.
Mens jeg scrollede gennem min Discord-server, stødte jeg på et spørgsmål om filtrering af output fra kommandolinjen. I stedet for at svare direkte besluttede jeg at skrive denne artikel, så flere kunne få gavn af svaret. Kære læser, jeg håber, du også finder dette nyttigt! 🥳
awk
er et værktøj der kommer default i de fleste Linux-distributioner og macOS, der er fremragende til filtrering, udtræk og manipulation af tekst. Oprindeligt skabt i 1970'erne er det siden blevet en hjørnesten i rigtig manges daglige workflow - inklusiv mit. Selvom awk
deler nogle karakteristika med andre kommandolinjeværktøjer som sed
og grep
, er det langt mere kraftfuldt og fleksibelt.
sed
og grep
Mens sed
excellerer i tekstsubstitution og grep
primært bruges til tekstsøgning, kan awk
gøre begge dele og meget mere. Det kan behandle en tekstfil linje for linje og felt for felt, hvilket gør det yderst velegnet til datamanipulation.
Lad os se på nogle kodeeksempler for bedre at forstå awk
. Hvert kommandoeksempel viser også det forventede output.
printf 'gate
apple
what
kite
' | awk '/at/'
Output:
gate
what
Dette svarer til at bruge grep 'at'
eller sed -n '/at/p'
.
printf 'gate
apple
what
kite
' | awk '!/e/'
Output:
what
Dette svarer til at bruge grep -v 'e'
eller sed -n '/e/!p'
.
echo -e "field1 field2 field3
fieldA fieldB fieldC" | awk '{print $1}'
Output:
field1
fieldA
Dette udskriver "field1" og "fieldA", som er de første felter i hver linje.
echo -e "10 20
30 40" | awk '{print $1 + $2}'
Output:
30
70
Dette tager summen af de første to felter i hver linje og udskriver dem.
Jeg håber, denne introduktion har givet dig et lille indlbik i hvad awk
kan tilbyde! awk
er et utroligt kraftfuldt værktøj, og vi har kun ridset overfladen her. Jeg tænker at lave en række opfølgende artikler med flere sjove ting at bruge awk til, så husk at hold øje med bloggen
🤪
Vi ses 👋🏻🦒🐧