Dwa separatory pól (dwukropek i spacja) w awk

Jak możemy określić dwa separatory pól w poleceniu awk, skoro jednym z nich jest spacja? Myślę, że można to zrobić za pomocą osadzonego warunku if-else w awk, jednak nie jestem pewien co do dokładnego polecenia.

Przykładowy plik jest następujący:

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

Chcę wydrukować drugą kolumnę ($ 2). Oczekiwany wynik to:

Engineer Doctor GovntJob Master 

Kiedy próbowałem wstawić spację i dwukropek jako separatory pól, nie powiodło się z powodu błędu składni:

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

Jak możemy użyć dwóch separatorów pól i funkcjonalności awk?

Komentarze

  • Oprócz Odpowiedź Yeti ', pamiętaj, że powłoka dzieli się na niecytowane białe znaki, aby utworzyć listę argumentów dla awk, więc zamiast -F[ :] (jeden arg) otrzymał -F[: i ]. Ten wykres jest całkiem przydatny (zwróć uwagę na pionowe strzałki dla pojedynczych / podwójnych cudzysłowów).
  • Dziękuję ArielCo, bardzo cenne!

Odpowiedź

Jesteś na dobrej drodze!
Po prostu dodaj brakujące cudzysłowy wokół [ :]:

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *