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
Odpowiedź
Jesteś na dobrej drodze!
Po prostu dodaj brakujące cudzysłowy wokół [ :]
:
awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master
-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).