Două separatoare de câmp (colon și spațiu) în awk

Cum putem specifica două separatoare de câmp în comanda awk atunci când unul dintre ele este spațiu? Cred că acest lucru se poate face folosind o condiție încorporată if-else în awk, totuși nu sunt sigur de comanda exactă.

Fișierul eșantion este după cum urmează:

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

Vreau să imprim cea de-a doua coloană (2 USD). Ieșirea așteptată este:

Engineer Doctor GovntJob Master 

Când am încercat să pun atât spațiu cât și două puncte ca separatoare de câmp, nu a reușit cu o eroare de sintaxă:

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

Cum putem folosi două separatoare de câmp și să utilizăm funcționalitatea awk?

Comentarii

  • În plus față de Răspunsul Yeti ', amintiți-vă că shell-ul se împarte prin spații albe necotate pentru a crea lista de argumente de awk, deci în loc de -F[ :] (unul arg) a primit -F[: și ]. Acest grafic este destul de la îndemână (rețineți săgețile verticale pentru ghilimele simple / duble).
  • Mulțumesc ArielCo, foarte apreciat!

Răspuns

Sunteți pe drumul cel bun!
Doar adăugați ghilimelele lipsă în jurul [ :]:

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *