Возможное решение
sed 's/^....-\(..\)-\(..\)/\2.\1/'
Эти несколько точек не могут быть элегантными; команда не заботится, имеет ли она дело с числами; ему все равно, есть ли что-то еще в первой "колонке". Эти проблемы могут быть исправлены с помощью более сложного подхода, но в его нынешнем виде команда довольно проста.
Общая команда sed 's/A/B/' заменяет шаблон A на B , самое большее один раз на строку.
Где A в этом случае состоит из:
^ - начало маркера строки,
.... - ровно четыре символа,
- - буквально - ,
(..) - ровно два символа, на которые ссылается позже \1 ,
- - буквально - ,
(..) - ровно два символа, на которые ссылается позже \2 .
И B
\2 - что бы ни было во втором () в A ,
. Буквальный . ,
\1 - что бы ни было в первом () в A
Дополнительно ( и ) экранируются \ .
Для обработки файла добавьте его в качестве последнего аргумента. Для обработки файла на месте используйте -i , например
sed -i 's/^....-\(..\)-\(..\)/\2.\1/' myfile.txt