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 중 하나 앞에 백슬래시가 없습니다 )
. 아마도 (대체에 성공하면 인쇄하여 대체된 행이 두 번 인쇄됩니다) g
대신에 (전역 대체; 모든 발생)을 의미했을 것입니다 . p
및 \{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"