Hvordan kan vi angive to feltadskillere i kommandoen awk, når en af dem er mellemrum? Jeg tror, dette kan gøres ved at bruge en integreret if-else-tilstand i awk, men jeg er ikke sikker på den nøjagtige kommando.
Eksempelfilen er som nedenfor:
cat test.txt Swapnil Engineer 20000 Avinash:Doctor:30000 Dattu GovntJob 50000 Amol:Master:10000
Jeg vil udskrive den anden kolonne ($ 2). Forventet output er:
Engineer Doctor GovntJob Master
Da jeg forsøgte at placere både mellemrum og kolon som feltseparatorer, mislykkedes det med en syntaksfejl:
awk -F[ :] "{print $2}" test.txt awk: cmd. line:1: :] awk: cmd. line:1: ^ syntax error
Hvordan kan vi bruge to feltadskillere og bruge awk-funktionalitet?
Kommentarer
Svar
Du er på rette spor!
Tilføj bare de manglende anførselstegn omkring [ :]
:
awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master
-F[ :]
(en arg) det fik-F[:
og]
. Dette diagram er ret praktisk (bemærk de lodrette pile for enkelt / dobbelt anførselstegn).