Unix系统下如何从grep命令输出行中提取指定字符与字段?
Unix环境下提取指定字段的实现方法
你可以直接将grep的输出通过管道传递给awk命令完成提取,无需存储中间文件:
# 直接对接你的原grep命令即可 <你的原始grep语句> | awk -F '[/:\\[\\]]' '{print $1, $4, $NF}'
如果已经把grep结果保存到了文件grep_output.txt中,直接读取文件处理即可:
awk -F '[/:\\[\\]]' '{print $1, $4, $NF}' grep_output.txt
命令说明
-F '[/:\\[\\]]'是指定字段分隔符为/、:、[、]四个字符,awk会自动按这些字符拆分每一行内容$1对应拆分后的第一个字段,也就是你需要的AB、BC这类前缀$4对应拆分后的第四个字段,即方括号包裹的时间戳内容$NF对应每一行的最后一个字段,也就是交易ID数值
如果担心日志格式有微小变动导致分隔符拆分出错,也可以用正则匹配的方式实现,兼容性更强:
<你的原始grep语句> | awk 'match($0, /^([^\/]+)\/.*\[([0-9_:]+)\].* ([0-9]+)$/, res) {print res[1], res[2], res[3]}'
内容的提问来源于stack exchange,提问作者G.Kol
相关产品推荐
相关产品推荐

