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
など)には、より読みやすくする拡張正規表現があります。ssed
sed
sed -E 's/([0-9]+\.){3}[0-9]+/ANONYMOUS/g' < "$IPLOG"