To feltseparatorer (kolon og mellomrom) i awk

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

  • I tillegg til Yeti ' s svar, husk at skallet deles med unotert hvitt mellomrom for å lage listen over argumenter for å awk, så i stedet for -F[ :] (en arg) den fikk -F[: og ]. Dette diagrammet er ganske praktisk (merk de vertikale pilene for enkle / doble anførselstegn).
  • Takk ArielCo, mye verdsatt!

Svar

Du er på rett spor!
Bare legg til de manglende anførselstegnene rundt [ :]:

awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master 

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *