如何在Unix中使用cut或awk处理grep输出结果?
解决方法
针对你的需求,使用awk可以更灵活地处理多分隔符的提取,以下是可行的命令:
grep -I '15:00.*Receivedrequest.*' test.log | awk -F'\\[|, |=|\\]' '{print $2, $4, substr($6, 1, 3), $8}'
命令说明:
-F'\\[|, |=|\\]':将[、,、=、]都设为分隔符,把原字符串拆分为多个字段:$2对应提取的Sai$4对应Year=后面的2023substr($6, 1, 3)从Birth=后的1999中截取前3位,得到199$8对应Location=后面的SYD
为什么之前的命令无效:
你之前的命令先通过awk按空格分割行,但原输出中Receivedrequest和[之间没有空格(或空格位置不符合预期),导致$2/$3/$4无法正确提取目标内容,后续的cut也只能截取到部分字段,最终结果不符合预期。
内容的提问来源于stack exchange,提问作者Sai Srinivas
相关产品推荐
相关产品推荐

