Замена IP-адреса на результат sed: sed: -e выражение # 1, char 57: Непревзойденный (или \ (

sed -e 's/\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\.)\(.*\)/ANONYMOUS\2/p' $IPLOG 

Я пытаюсь заменить ip addr из $ IPLOG на ANONYMOUS, но я получаю эту ошибку

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

One Solution collect form web for “Замена IP-адреса на результат sed: sed: -e выражение # 1, char 57: Непревзойденный (или \ (”

Перед одним из них вам не хватает обратной косой черты. Вероятно, вы имели в виду g (глобально заменить, каждое вхождение) вместо p (печать, если замена была успешной, что приведет к печати дважды подряд строк). И \{1,\} (или \+ с некоторыми реализациями) вместо * ( один или несколько вместо нуля или более ):

 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 (или -r как в ssed или более старых версиях GNU sed ) для расширенных регулярных выражений, которые могут сделать его более понятным:

 sed -E 's/([0-9]+\.){3}[0-9]+/ANONYMOUS/g' < "$IPLOG" 
  • Regex `/ pattern / g` и ed`: g / pattern / `: что было первым, и почему` g`?
  • Измените часть строки, если ключевое слово найдено с помощью sed?
  • Добавьте двойную кавычку, если между словами в столбце есть пробел
  • Отменить перемещение букв с помощью sed
  • Нечувствительность к регистру, дублирующая строку, удалите дубликат по выбору случая с самым высоким дублированием
  • изменить шаблон, удалив пробелы?
  • Изменить формат даты на месте с помощью команды `sed`
  • Как заменить литерал \ n символом новой строки? (на OS X)
  • Как настроить интервал между символами после определенной строки?
  • Почему я не могу избежать брекетов "]" в sed?
  • Работает ли ] для sed шаблонов на всех дистрибутивах Linux?
  • Linux и Unix - лучшая ОС в мире.