Två fältseparatorer (kolon och mellanslag) i awk

Hur kan vi specificera två fältseparatorer i awk-kommando när en av dem är mellanslag? Jag tror att detta kan göras genom att använda ett inbäddat if-else-tillstånd i awk, men jag är inte säker på exakt kommando.

Exempelfilen är som nedan:

cat test.txt Swapnil Engineer 20000 Avinash:Doctor:30000 Dattu GovntJob 50000 Amol:Master:10000 

Jag vill skriva ut den andra kolumnen ($ 2). Förväntad utgång är:

Engineer Doctor GovntJob Master 

När jag försökte placera både mellanslag och kolon som fältseparatorer misslyckades det med ett syntaxfel:

awk -F[ :] "{print $2}" test.txt awk: cmd. line:1: :] awk: cmd. line:1: ^ syntax error 

Hur kan vi använda två fältseparatorer och använda awk-funktionalitet?

Kommentarer

  • Förutom Yeti ' s svar, kom ihåg att skalet delas av ociterat tomt utrymme för att skapa listan med argument att awk, så istället för -F[ :] (en arg) det fick -F[: och ]. Det här diagrammet är ganska praktiskt (notera de vertikala pilarna för enkla / dubbla citat).
  • Tack ArielCo, mycket uppskattad!

Svar

Du är på rätt spår!
Lägg bara till de saknade citaten runt [ :]:

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

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *