sed正则匹配需要的字段

    sed除了常用的文本替换之外,还可以通过正则表达取出需要的字段,具体操作如下:

head -n 20 /data/logs/nginx.log |sed 's/\([^ ]*\) .*\(imei\=[^&]*\).*/\1,\2/'
# 过虑前:
125.126.250.49 - - [09/Jul/2015:00:00:01 +0800] "GET /client/spiritscreen/recommend?version=12.150417&imei=51B5ECC4A771CEF1D3BA81B34F4416C0&channelId=jltop_m_scb07&p=com.GreanMaster.pixelmonmcpecraftrun2 HTTP/1.0" 200 0.032 938 "-" "-" "125.126.250.49" "-" "-"
# 过虑后:
125.126.250.49,imei=51B5ECC4A771CEF1D3BA81B34F4416C0
# 其中:
[^ ]:表示匹配非空
\1,\2:表示取出前面括号内的对应内容,并心逗号隔开

猜你喜欢

转载自www.cnblogs.com/jiba/p/12044460.html
今日推荐