Hoe kunnen we twee veldscheidingstekens specificeren in het awk-commando als een ervan spatie is? Ik denk dat dit kan worden gedaan door een ingesloten if-else-voorwaarde in awk te gebruiken, maar ik ben niet zeker van het exacte commando.
Voorbeeldbestand is als volgt:
cat test.txt Swapnil Engineer 20000 Avinash:Doctor:30000 Dattu GovntJob 50000 Amol:Master:10000
Ik wil de tweede kolom ($ 2) afdrukken. De verwachte uitvoer is:
Engineer Doctor GovntJob Master
Toen ik probeerde om zowel spatie als dubbele punt als veldscheidingstekens te plaatsen, mislukte dit met een syntaxisfout:
awk -F[ :] "{print $2}" test.txt awk: cmd. line:1: :] awk: cmd. line:1: ^ syntax error
Hoe kunnen we twee veldscheidingstekens gebruiken en awk-functionaliteit gebruiken?
Opmerkingen
Antwoord
Je bent op de goede weg!
Voeg gewoon de ontbrekende aanhalingstekens toe rond [ :]
:
awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master
-F[ :]
(een arg) het kreeg-F[:
en]
. Deze grafiek is best handig (let op de verticale pijlen voor enkele / dubbele aanhalingstekens).