Обмен местами символов в строке (bash)

Я столкнулся с проблемой, когда мне нужно изменить порядок символов в строке в bash, чтобы получить ICCID сим-карты.

Число, которое я получаю от модема, выглядит, например, так; 980136010000006187F5. Что мне нужно сделать, это взять символы в строке в парах и повторять их в обратном порядке. В этом примере 98 будет 89, 01 будет 10 и т. Д., В итоге добавится 8910631000000016785F, который является правильным номером ICCID.

Я думаю, что это может быть возможно при использовании sed или цикла for, но я застрял в том, как этого добиться. Помощь будет очень ценится!

С уважением, Карл

1 ответ

Решение

sed могу сделать это легко.

sed 's/\(.\)\(.\)/\2\1/g' <<<980136010000006187F5

Команда sed находит все совпадения с .. (т.е. пара символов), захватывая их независимо, а затем заменяя их двумя захватами в обратном порядке.

Другие вопросы по тегам