У меня есть файл, который содержит много строк (разделитель строк ~). В каждой строке у меня много элементов, разделенных разделителем '*'. Что я хочу сделать, У меня будет строка, которая начинается с строки TRN в моем файле. Он может содержать 4 (включая TRN) или больше точек данных. Что-то вроде,Как заменить часть строки на sed?
TRN*1*S521000035*1020494919~
TRN*1*S521000035*1020494919*787989800~
Я хочу заменить четвертую точку данных с этих строк на abc123. т.е.
TRN*1*S521000035*abc123~
TRN*1*S521000035*abc123*787989800~
Я попытался с помощью команды с патч в регулярном выражении
sed -i 's/^TRN\*(.*)\*(.*)\*(.*)$/abc123/g' file.txt
Но вся строка становится заменена на abc123.
Возможно ли изменить только его 4-й канал с помощью команды sed?
Работал. Большое спасибо! –
В приведенном выше случае я хотел заменить четвертую точку данных, только если первая точка данных TRN. Поэтому я настроил вашу команду как «sed -r -i 's/^ (TRN \ *) ((\ w + \ *) {2}) \ w * (.*)/\ 1 \ 2abc123 \ 4/g '' –