如何在sed中使用正则表达式和反向引用?

时间:2018-09-30 23:52:49

标签: regex sed

我想从Nginx访问日志的日期字段中删除括号。我尝试过

sed -E 's#\[(\d+)#\1#' access.log | head

但是它仍然可以打印

172.31.20.98 - - [30/Sep/2018:20:01:01 +0000] "GET ...

我最初尝试更改日期格式,但这没用。

sed -E 's#(\d+)/(\w+)/(\d+)#\3-\2-\1#' access.log

2 个答案:

答案 0 :(得分:0)

如果您要删除%U[,则可以分两个步骤进行操作,每个元字符都以反斜杠转义:

]

答案 1 :(得分:0)

我最终使用的是旧的Perl。

perl -pe 's#\[(\d+)/(\w+)/(\d+):(\d+):(\d+):(\d+) \+0000\]#"$3-$2-$1 $4:$5:$6"#' < access.log

172.31.20.98 - - "2018-Sep-30 20:01:01" ...