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


8

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

Przykładowy plik jest jak poniżej:

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

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

Engineer
Doctor
GovntJob
Master

Gdy próbowałem umieścić zarówno spację, jak i dwukropek jako separatory pól, wystąpił błąd z błędem 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 funkcji awk?


Oprócz odpowiedzi Yeti pamiętaj, że powłoka dzieli się na nie cytowane białe znaki, aby utworzyć listę argumentów do awk, więc zamiast -F[ :](jednego argumentu) otrzymała -F[:i ]. Ten wykres jest bardzo przydatny (zwróć uwagę na pionowe strzałki dla pojedynczych / podwójnych cudzysłowów).
arielCo

Dzięki ArielCo, bardzo mile widziane!
Swapnil Dhule

Odpowiedzi:


13

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

awk -F'[ :]' '{print $2}' test.txt
Engineer
Doctor
GovntJob
Master
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.