Twee veldscheidingstekens (dubbele punt en spatie) in awk

Hoe kunnen we twee veldscheidingstekens specificeren in het awk-commando als een ervan spatie is? Ik denk dat dit kan worden gedaan door een ingesloten if-else-voorwaarde in awk te gebruiken, maar ik ben niet zeker van het exacte commando.

Voorbeeldbestand is als volgt:

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

Ik wil de tweede kolom ($ 2) afdrukken. De verwachte uitvoer is:

Engineer Doctor GovntJob Master 

Toen ik probeerde om zowel spatie als dubbele punt als veldscheidingstekens te plaatsen, mislukte dit met een syntaxisfout:

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

Hoe kunnen we twee veldscheidingstekens gebruiken en awk-functionaliteit gebruiken?

Opmerkingen

  • Naast Yeti ' s antwoord, onthoud dat de shell splitst door niet-aangehaalde witruimte om de lijst met argumenten voor awk te maken, dus in plaats van -F[ :] (een arg) het kreeg -F[: en ]. Deze grafiek is best handig (let op de verticale pijlen voor enkele / dubbele aanhalingstekens).
  • Bedankt ArielCo, zeer gewaardeerd!

Antwoord

Je bent op de goede weg!
Voeg gewoon de ontbrekende aanhalingstekens toe rond [ :]:

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

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *