Sed заменяет строку другой строкой, неправильный результат

Мне нужно заменить ../ на ./ из нижней строки.

<html xmlns:og="http://test.org/schema/"  xmlns:website="../test/ns/website" >

Но при использовании команды

sed -i 's+../+./+g' ./*

Содержимое файла изменено на

<html xmlns:og="htt.//test.o./sche./" xmlns:website="./te././website" >

В чем может быть проблема.


person CodeDezk    schedule 25.07.2019    source источник


Ответы (1)


Это должно сделать:

echo "<html xmlns:og="http://test.org/schema/"  xmlns:website="../test/ns/website" >" | sed 's|\.\./|./|g'
<html xmlns:og=http://test.org/schema/  xmlns:website=./test/ns/website >

Вам нужно избежать ., иначе это означает любой символ.

Это тоже должно работать: sed 's+\.\./+./+g'

person Jotne    schedule 25.07.2019