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 

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

  • Внедрить включение другого файла в поток (чтение из stdin)
  • Создание нескольких входных файлов с помощью sed в цикле for
  • Необходимо вставить одинарные кавычки в текстовый файл для использования в качестве SQL-запроса с помощью sed
  • Обнаружение повторения шаблонов в файле
  • Чтение заданных строк в файле - BASH
  • Как удалить файлы и каталоги, которые не находятся в каталоге резервного копирования
  • Использовать sed с обратными ссылками
  • Как искать и заменять строку символами новой строки в командной строке в файле
  • Вывести строки журнала между startTime и endTime
  • bash заменить часть строки на основе местоположения
  • Замените строку «string | string»
  • Linux и Unix - лучшая ОС в мире.