J’essaie d’ouvrir un fichier journal et de manipuler des lignes si nécessaire. Par exemple
2010-01-31 00: 05: 59,400 -0500 | [VHX4077ff8Ze1sTnE-op51V] | [TB-bce11b: -16a2-5ed9f542] | [6C7CA345F63F835CB353FF15BD6C5E052EXX8E7A | 1000107 @ Superfly | 31933782 | 172.9.8.3 | DEVICE_ID_CREATED]
Je dois modifier la colonne 5 et supprimer tout ce qui précède le Superfly . Supprimez essentiellement le nombre et le symbole ‘@’. Ce fichier aura des entrées où la colonne 5 n’a pas le numéro d’entrée @ et cette ligne n’aura pas besoin d’être modifiée. Et le nombre pourrait être un nombre quelconque de chiffres avant le @. J’ai essayé d’utiliser la commande de remplacement de awk mais je ne peux pas la faire fonctionner.
Mon script:
awk -F "|" {' sub(".*@","",$5) print $5 '} test.log
awk: cmd. ligne: 3: imprimer 5 $
awk: cmd. ligne: 3: ^ erreur de syntaxe
awk -F "|" {' sub(".*@","",$5); print $5 '} test.log
Point-virgule manquant après la première déclaration.
éditez-vous le fichier entier et remplacez-vous chaque ligne par la valeur de la colonne 5? si non,
awk -F"|" '$5~/@/{ sub(".*@","",$5) }{print}' OFS="|" file