Hur kan vi specificera två fältseparatorer i awk-kommando när en av dem är mellanslag? Jag tror att detta kan göras genom att använda ett inbäddat if-else-tillstånd i awk, men jag är inte säker på exakt kommando.
Exempelfilen är som nedan:
cat test.txt Swapnil Engineer 20000 Avinash:Doctor:30000 Dattu GovntJob 50000 Amol:Master:10000
Jag vill skriva ut den andra kolumnen ($ 2). Förväntad utgång är:
Engineer Doctor GovntJob Master
När jag försökte placera både mellanslag och kolon som fältseparatorer misslyckades det med ett syntaxfel:
awk -F[ :] "{print $2}" test.txt awk: cmd. line:1: :] awk: cmd. line:1: ^ syntax error
Hur kan vi använda två fältseparatorer och använda awk-funktionalitet?
Kommentarer
Svar
Du är på rätt spår!
Lägg bara till de saknade citaten runt [ :]
:
awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master
-F[ :]
(en arg) det fick-F[:
och]
. Det här diagrammet är ganska praktiskt (notera de vertikala pilarna för enkla / dubbla citat).