Как правильно заменить часть URL? - PullRequest
0 голосов
/ 18 мая 2019

Я хочу заменить имя файла txt, находящегося в файле example.txt, содержимое которого

whatever http://example.com/t25.txt whatever whatever
whatever2
whatever

с другим txt именем файла среди случайных строк. Результат
sed -i -E 's/\/(.*?)\.txt/b82/' example.txt команда

whatever http:b82 whatever whatever
whatever

но я хотел

whatever http://example.com/b82.txt whatever whatever
whatever2
whatever

Как я могу сделать это правильно?

1 Ответ

0 голосов
/ 18 мая 2019

Вместо некожадных квантификаторов (*?) с слишком широким классом символов (., совпадающим с любым символом вообще), будет более точным: [^/]* будет соответствовать 0 или более символов без косой черты, что гарантирует, что совпадение не пересекает границы /.

Также не забудьте добавить подходящие детали, которые вы не хотите заменять, обратно в запасную часть:

s!/[^/]*\.txt!/b82.txt!

Я перешел на другой разделитель для s здесь (а именно !), чтобы избежать синдрома наклоняющейся зубочистки (/\/[^\/]...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...