[英]Replacing String in log Using Sed
我有如下訪問日志:
10.2.21.120 - - [26/Jan/2013:19:15:11 +0000] "GET /index.html HTTP/1.1" 200 6 "-" "Mozilla/0.0 (X11; Linux x86_64) AppleWebKit/000.00 (KHTML, like Gecko) Chrome/0.0.0000.00 Safari/000.00"
我要替換用戶代理。 結果:
10.2.21.120 - - [26/Jan/2013:19:15:11 +0000] "GET /index.html HTTP/1.1" 200 6 "-" "NetScape"
我嘗試將所有"-"
之后的內容更改,但Sed跳過""
並更改所有內容-
像sed 's/[(][^)]*[)]/\\(NetScape\\)/g'
g'input`只能在方括號中更改用戶代理
使用sed
,您可以在行尾替換引號之間的子字符串:
sed 's/"[^"]*"$/"NetScape"/'
在這里, "[^"]*"$
匹配"
,然后0+比其他字符"
然后"
在生產線的末端。 您不需要g
運算符,因為sed
逐行處理文件。
參見在線sed
演示 :
log='10.2.21.120 - - [26/Jan/2013:19:15:11 +0000] "GET /index.html HTTP/1.1" 200 6 "-" "Mozilla/0.0 (X11; Linux x86_64) AppleWebKit/000.00 (KHTML, like Gecko) Chrome/0.0.0000.00 Safari/000.00"'
sed 's/"[^"]*"$/"NetScape"/' <<< "$log"
# => 10.2.21.120 - - [26/Jan/2013:19:15:11 +0000] "GET /index.html HTTP/1.1" 200 6 "-" "NetScape"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.