我正在尝试打开日志文件并根据需要操作行。例如
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]
我需要编辑第5列并删除 Superfly 之前的所有内容。基本上删除那里的任何数字和'@'符号。此文件将包含第5列没有数字@条目的条目,并且不需要编辑该行。数字可以是@之前的任意位数。我曾尝试使用awk的替代命令,但我无法让它工作。
我的剧本:
awk -F "|" {' sub(".*@","",$5) print $5 '} test.log
awk:cmd。 line:3:打印5美元 awk:cmd。 line:3:^语法错误
答案 0 :(得分:4)
awk -F "|" {' sub(".*@","",$5); print $5 '} test.log
第一个声明后缺少分号。
答案 1 :(得分:1)
您是在编辑整个文件并用第5列的值替换每一行吗?如果没有,
awk -F"|" '$5~/@/{ sub(".*@","",$5) }{print}' OFS="|" file