0

我正在编辑一些网络日志文件,我想从一些字段中删除双引号,但不是全部。

例如,在以下行中,我想删除 IP 地址和 server.domain.com 中的双引号,但保留其余部分。

2013-02-18 21:47:46.636 POST /Path/page.html - - "173.194.79.106" "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.296)" - "server.domain.com" 200 1079 15

我正在循环加载每一行的文件Foreach-Object

我可以通过以下方式获取 IP 地址周围不带引号的行:

[regex]::replace($_,"`"(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})`"", '$1')

因此,我尝试使用以下内容对 server.domain.com 项目执行相同的操作:

[regex]::replace($_,"`"[a-zA-Z]*\.[dD][oO][mM][aA][iI][nN]\.[cC][oO][mM]`"",'$1')

我的结果是这样的:

2013-02-18 21:47:46.636 POST /Path/page.html - - "173.194.79.106" "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.296)" - $1 200 1079 15

我究竟做错了什么?

4

1 回答 1

0

添加括号并(?i)用于不区分大小写:

[regex]::replace( $_, "(?i)`"([a-z]*\.domain\.com)`"", '‌​$1' )

或者,您可以使用-replace默认情况下不区分大小写

$_ -replace "`"([a-z]*\.domain\.com)`"", '$1'
于 2013-02-19T21:34:21.740 回答