IPアドレスをsedに置き換えると、次のようになります。 sed: -e 式 #1、文字 57: 一致しない( または \(

IPアドレスをsedに置き換えると、次のようになります。 sed: -e 式 #1、文字 57: 一致しない( または \(
sed -e 's/\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.)\(.*\)/ANONYMOUS\2/p' $IPLOG

$ IPLOGからANONYMOUSにIPアドレスを置き換えようとすると、このエラーが発生します。

sed: -e expression #1, char 57: Unmatched ( or \(

答え1

sの1つの前にバックスラッシュがありません)。おそらく(代わりに成功すると、印刷して置き換えられた行が2回印刷されます)のg代わりに(グローバル置換;すべての出現)を意味したでしょう。(または一部の実装)の代わりpに(\{1,\}\+*1つ以上変える0以上):

sed 's/[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}/ANONYMOUS/g' < "$IPLOG"

またはもう少し細分化してみてください。

sed 's/\([0-9]\{1,\}\.\)\{3\}[0-9]\{1,\}/ANONYMOUS/g' < "$IPLOG"

いくつかのsed実装-E(またはGNUまたは以前のバージョン-rなど)には、より読みやすくする拡張正規表現があります。ssedsed

sed -E 's/([0-9]+\.){3}[0-9]+/ANONYMOUS/g' < "$IPLOG"

関連情報