• XSS.stack #1 – первый литературный журнал от юзеров форума

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

hoirslkdut

base
Пользователь
Регистрация
16.03.2022
Сообщения
74
Реакции
33
Есть вот такой файл:

Код:
aa:bb:cc:dd
aa:bb
aa:bb:cc

Нужно находить с конца строки первые ":" и заменять их на другой символ, не стирая остальной части строки.
Другими словами нужно чтобы получилось:

Код:
aa:bb:cc|dd
aa|bb
aa:bb|cc

Пробую так:

Код:
sed "s/:[^:]*$/|/" 1 >2

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

Код:
aa:bb:cc|
aa|
aa:bb|

А нужно именно заменить только первый с конца строки нашедшийся символ, не стирая то что после него
 
Последнее редактирование:
Офигеть, работает, спасибо! :) Удивительно что знак $ не использовался для указания конца строки... Я конечно понимаю что \1 это типа одно вхождение. но где указано что с конца строки ?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Офигеть, работает, спасибо! :) Удивительно что знак $ не использовался для указания конца строки... Я конечно понимаю что \1 это типа одно вхождение. но где указано что с конца строки ?
Первая часть шаблона \(.*\): описывает любую последовательность символов (включая пустую строку), которая заканчивается двоеточием.

Вторая часть шаблона \1|/ заменяет найденный шаблон на всю строку, за исключением последнего двоеточия, и добавляет вертикальную черту вместо последнего двоеточия.

Символ \1 означает "подмаску" или "группу" найденных символов в первой части шаблона, то есть все символы в строке до последнего двоеточия.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх