Hvordan kan vi spesifisere to feltseparatorer i awk-kommando når en av dem er mellomrom? Jeg tror dette kan gjøres ved å bruke en innebygd if-else-tilstand i awk, men jeg er ikke sikker på den eksakte kommandoen.
Eksempelfilen er som nedenfor:
cat test.txt Swapnil Engineer 20000 Avinash:Doctor:30000 Dattu GovntJob 50000 Amol:Master:10000
Jeg vil skrive ut den andre kolonnen ($ 2). Forventet utgang er:
Engineer Doctor GovntJob Master
Da jeg prøvde å sette både mellomrom og kolon som feltseparatorer, mislyktes det med en syntaksfeil:
awk -F[ :] "{print $2}" test.txt awk: cmd. line:1: :] awk: cmd. line:1: ^ syntax error
Hvordan kan vi bruke to feltseparatorer og bruke awk-funksjonalitet?
Kommentarer
Svar
Du er på rett spor!
Bare legg til de manglende anførselstegnene rundt [ :]
:
awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master
-F[ :]
(en arg) den fikk-F[:
og]
. Dette diagrammet er ganske praktisk (merk de vertikale pilene for enkle / doble anførselstegn).