sed regex не работает

регулярное выражение для поиска чисел или букв алфавита длиной 46 и добавить 0 в конец.

C:\Users\svuppula>echo "0020000000000000100000000000000000000000000001" | sed -e 's/[0-9a-z]{45}/\10/g' sed: -e expression #1, char 20: invalid reference \1 on `s' command's RHS 

где работает grep

 C:\Users\svuppula>echo "0020000000000000100000000000000000000000000001" | grep -E '[0-9a-z]{45}' "0020000000000000100000000000000000000000000001" 

версии:

C: \ Users \ svuppula> sed –version

 sed (GNU sed) 4.2.2 

C: \ Users \ svuppula> grep –version

 grep (GNU grep) 2.24 

One Solution collect form web for “sed regex не работает”

\1 относится к первой группе в скобках, но у вас ее нет. Либо добавьте круглую скобку, либо используйте & для заполнения всей строки соответствия:

 $ echo "foobar" | sed -e 's/foo/&ABC/' fooABCbar $ echo "foobar" | sed -re 's/(foo)/\1ABC/' fooABCbar 

Обратите внимание, что вам нужно -r в GNU sed использовать скобки, а также с подсчетом счетчика {NN} . (если вы не хотите использовать уродливые обратные следы на всех из них).

Так:

 echo "0020000000000000100000000000000000000000000001" | sed -re 's/([0-9a-z]{45})/\19/g' 00200000000000001000000000000000000000000000091 

Эта строка цифр составляет 46 символов, но регулярное выражение соответствует только 45 символам, поэтому девять добавляются до последней цифры. Привяжите регулярное выражение к началу и концу строки, если вы хотите обрабатывать только строки с ровно 45 символами.

 $ echo "002000000000000010000000000000000000000000001" | sed -re 's/^[0-9a-z]{45}$/&9/g' 0020000000000000100000000000000000000000000019 

(Я изменил число, добавленное к девяти, чтобы он не смешивался с нулями во входном файле.)

  • Почему мое регулярное выражение не работает с помощью sed в сценарии bash на Mac OSX?
  • Получить текст между словом и последней строкой?
  • извлекать часть строки, используя sed
  • sed предотвращает удаление остальной линии
  • Найти пустой тег в `xml` с помощью команды Unix
  • Преобразование таблицы в csv и обратно
  • файл поиска для строки (взятый из файла), затем замените любой экземпляр другой строки, которая попадает в первое совпадение
  • Ошибка Sed, заменяющая частичную строку переменной
  • Использование sed для замены кода javascript в нескольких файлах
  • Команда Sed для удаления инклюзивного диапазона символов
  • Как заменить литерал \ n символом новой строки? (на OS X)
  • Interesting Posts

    udev для назначения / ограничения последовательных портов на ряд номеров

    Ведение `/ etc / hosts` для хостов на DHCP

    Какая команда вынуждает диск вращаться?

    Доступ владельца к файлам в установленном каталоге NFS

    SED на Mac OS X

    Есть ли команда, которая создает временный файл, содержащий переданные ему аргументы?

    Изменение поведения gVim в Red Hat

    В чем разница между открытием приложения из терминала Vs, который непосредственно открывается?

    Как запустить приложение в качестве док-станции в openbox

    Почему vim не открывается на своем экране?

    GNU ls длинный список без разрешения / бит режима

    Где Linux задает значения по умолчанию для SHMMAX?

    Поиск строк в (нескольких) файлах, содержащих указанную строку во входном файле

    syslog-ng игнорирует имя базы данных MSSQL

    «ALL ALL = (ALL) NOPASSWD: ALL» было автоматически добавлено в мой файл / etc / sudoers. Это нарушение безопасности?

    Linux и Unix - лучшая ОС в мире.