Замена 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" 
  • Замените шаблон в файле длинной строкой
  • SED, чтобы найти и заменить точное слово, начинающееся с $
  • Я хотел бы стереть предыдущую точку нескольких строк текста
  • sed, разделяя переменную (предоставляющую число) из инструкции для вставки текста по определенной строке
  • Как следить и искать в файле, проходящем через фильтр, менее
  • Как добавить символ в конец строки с помощью SED?
  • sed, grep или tr, которая возвращает только латинские символы из файла UTF-8
  • sed заменить после соответствия символа
  • sed для совпадения нуля или большего количества пробелов в строке
  • sed - как (не) совпадать с несогласованными скобками
  • Фильтрация путей на определенную глубину
  • Linux и Unix - лучшая ОС в мире.