Problème de commande de remplacement Awk

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