0

いくつかの Web ログ ファイルを編集していて、一部のフィールドから二重引用符を削除したいのですが、すべてではありません。

たとえば、次の行では、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 に答える