Két mezőelválasztó (kettőspont és szóköz) az awk

Hogyan adhatunk meg két mezőelválasztót az awk parancsban, ha az egyik szóköz? Azt hiszem, ezt megtehetjük egy beágyazott if-else feltétel használatával az awk-ban, azonban nem vagyok biztos a pontos parancsban.

A minta fájl az alábbiak szerint alakul:

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

Szeretném kinyomtatni a második oszlopot ($ 2). A várható kimenet:

Engineer Doctor GovntJob Master 

Amikor megpróbáltam a szóközt és a kettőspontot is mezőelválasztóként elhelyezni, egy szintaktikai hibával nem sikerült:

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

Hogyan használhatunk két mezőelválasztót és használhatjuk az awk funkciókat?

Megjegyzések

  • A Yeti ' válasza, ne feledje, hogy a héj nem idézett szóközzel hasít, hogy létrehozza az awk argumentumok listáját, tehát a -F[ :] (egy arg) -F[: és ] lett. Ez a diagram nagyon hasznos (vegye figyelembe a függőleges nyilakat egyetlen / dupla idézőjeleknél).
  • Köszönöm ArielCo, nagyra értékelik!

Válasz

Jó úton jársz!
Csak add hozzá a hiányzó idézőjeleket a :

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

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük