Viji
@Viji
Associate DevOps Engineer

Как можно заменить символы в строке, но только после обратного слеша?

есть подобного вида строки:

"myfolder\lyc\something-lyc-mic.txt"

"any_number_offolder_with_lyc\lyc-myfolder\lyc\something-lyc-mic.txt"


мне нужно заменить lyc только после последнего слеша, например на yyy, чтобы получить
"any_number_offolder_with_lyc\lyc-myfolder\lyc\something-yyy-mic.txt"


пробовал разные варианты, не проходит, например
echo "any_number_offolder_with_lyc\lyc-myfolder\lyc\something-yyy-mic.txt" | sed 's/\(.*\)\\/\1\\/;s/lyc/yyy/g'


чего-то не допетриваю
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
можно sed с регуляркой
sed -r 's/lyc([^\]*)$/yyy\1/'
Только вашу строку следует в одинарные кавычки взять, или обратный слеш дублировать

<b>$ echo 'myfolder\lyc\something-lyc-mic.txt' | sed -r 's/lyc([^\]*)$/yyy\1/'</b>
myfolder\lyc\something-yyy-mic.txt
<b>$ echo 'any_number_offolder_with_lyc\lyc-myfolder\lyc\something-lyc-mic.txt' | sed -r 's/lyc([^\]*)$/yyy\1/'</b>
any_number_offolder_with_lyc\lyc-myfolder\lyc\something-yyy-mic.txt
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы