Comment pouvons-nous spécifier deux séparateurs de champs dans la commande awk quand lun deux est un espace? Je pense que cela peut être fait en utilisant une condition if-else intégrée dans awk, mais je ne suis pas sûr de la commande exacte.
Exemple de fichier comme ci-dessous:
cat test.txt Swapnil Engineer 20000 Avinash:Doctor:30000 Dattu GovntJob 50000 Amol:Master:10000
Je veux imprimer la deuxième colonne ($ 2). La sortie attendue est:
Engineer Doctor GovntJob Master
Quand jai essayé de placer à la fois lespace et les deux points comme séparateurs de champs, cela a échoué avec une erreur de syntaxe:
awk -F[ :] "{print $2}" test.txt awk: cmd. line:1: :] awk: cmd. line:1: ^ syntax error
Comment pouvons-nous utiliser deux séparateurs de champs et utiliser la fonctionnalité awk?
Commentaires
Réponse
Vous êtes sur la bonne voie!
Ajoutez simplement les guillemets manquants autour de [ :]
:
awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master
-F[ :]
(un arg) il a obtenu-F[:
et]
. Ce graphique est assez pratique (notez les flèches verticales pour les guillemets simples / doubles).