我有以下格式的日志行:
2016-08-04 19:12:02,537 INFO ...<Thread-4> - Got a message [......|clientTradeId=xxxxxxx|timeInForce=xxxx|.....TradeResponseMessage]
我需要使用“有消息”关键短语提取所有行;然后打印出生成的候选名单中的'clientTradeId = xxxxxxx'部分。
如何通过脚本实现这一目标(grep和cut? - 或者是否有更好的选择)
答案 0 :(得分:0)
考虑数据在文件data.log
中grep -F "Got a message" data.log | grep -Po "clientTradeId=[^| ]+"
使用剪切
grep -F "Got a message" data.log | cut -f2 -d'|'
答案 1 :(得分:-1)
更新的命令感谢@BenjaminW:
sed -rn 's/.*(clientTradeId=[0-9]*).*/p' file
没有使用过sed,但是我使用了正则表达式。
查看sed的文档
cat file | sed '/.*(clientTradeId=[0-9]*).*/\1/'
这样做是将文件传输到sed,然后使用正则表达式选择你想要的部分,然后输出它(我希望)。