Как заменить значения в строке с помощью sed, но сохранить строку неповрежденной

Как заменить значения в строке с помощью sed, но сохранить строку в целости?

Например, echo "01XX1234"

Я хочу заменить XX шестнадцатеричным значением и оставить 01 и 1234 целыми. Я пробовал каждую комбинацию, о которой я могу думать, но sed становится лучше меня.

Я могу сделать это так, но есть ли более простой способ?

 echo "01XX1234" | sed -n 's/\(01..1234\)/01AB1234/g' 

2 Solutions collect form web for “Как заменить значения в строке с помощью sed, но сохранить строку неповрежденной”

sed заменит только совпадающую подстроку строки.

 $ echo '01XX1234' | sed 's/XX/AF/' 01AF1234 

Если вы намерены всегда заменять третий и четвертый персонажи, но сохраните первый и второй неповрежденные, вы можете использовать:

 $ echo '01XX1234' | sed 's/\(.\{2\}\).\{2\}/\1AF/' 01AF1234 
  • \{2\} означает два вхождения символа, стоящего прежде (в данном случае: любой символ)
  • \(...\) круглые скобки используются для создания соответствующей группы; вы можете ссылаться на подстроку подстроки позже в шаблоне или в заменяющей строке
  • \1 относится к первой подобранной подстроке (в данном случае, то есть «01»)

echo "01XX1234" | sed 's/XX/AB/'

или
echo "01XX1234" | sed 's/\(01\).*\(1234\)/\1AB\2/'

  • Linux bash: поиск и замена в файле без выхода из строя
  • Как удалить строку символов после и до определенного символа?
  • Редактирование бинарных потоков, содержащих байты '\ x00'
  • Печать строки между двумя круглыми скобками
  • заменить строки текстом с соответствующим текстом
  • Как получить все строки между первым и последним вхождениями шаблонов?
  • Как извлечь строки, начинающиеся с шаблона и фрагментов между двумя шаблонами?
  • Скопируйте до определенного многострочного шаблона
  • Печать строк с нечетными номерами, печать строк с четными номерами
  • Список всех html-тегов в файле
  • Как заменить третьего символа на другой персонаж
  • Linux и Unix - лучшая ОС в мире.