Это довольно просто с внутренними командами bash
, предполагающими два поля согласно следующей расшифровке:
pax:~$ x='abc:123'
pax:~$ echo "${x#*:}:${x%:*}"
123:abc
Первая подстановка ${x#*:}
удаляет все от начала до двоеточия. Второй, ${x%:*}
, удаляет все от двоеточия до конца.
Затем вы просто присоединяете их к двоеточию между ними.
Это не имеет значения для вашего конкретные данные, но %
и #
используют кратчайший возможный шаблон. Варианты %%
и ##
дадут вам максимально длинный шаблон (жадный).
В качестве отступления, это идеально, если вы делаете это для одной строки за раз, так как вы не Не нужно запускать внешний процесс, чтобы сделать работу за вас. Но если вы обрабатываете весь файл, есть лучшие способы сделать это, например, с помощью awk
:
pax:~$ printf "abc:123\ndef:456\nghi:789\n" | awk -F: '{print $2 FS $1}'
123:abc
456:def
789:ghi