簡體   English   中英

使用Sed替換日志中的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM