LINUX.ORG.RU

Попарно разбить символы после слеша

 


0

1

Доброго времени суток.
Задача сделать следующее. Из файла со строками:

...
лишить/BBLLNN
отбой/IIIi
способ/IIIiIhIk
...
надо получить
...
лишить/;BB;LL;NN;
отбой/;II;Ii;
способ/;II;Ii;Ih;Ik;
...

т.е. в каждой строке после слеша добавить точку с запятой через каждые два символа.
Как можно сделать?

[~]$ for i in $(echo "лишить/BBLLNN\nотбой/IIIi\nспособ/IIIiIhIk"); do left=$(echo $i | cut -d '/' -f 1); right=$(echo $i | cut -d '/' -f 2); repeated=$(echo $right | sed 's/../&;/g'); echo $left/\;$repeated; done
лишить/;BB;LL;NN;
отбой/;II;Ii;
способ/;II;Ii;Ih;Ik;
post-factum ★★★★★
()
Ответ на: комментарий от outtaspace

Спасибо, но насколько я понял, ваш вариант предусматривает указание конкретных символов (aabbcc). В моём случае там могут быть разные символы (около двух сотен комбинаций).

sspphheerraa
() автор топика
Ответ на: комментарий от sspphheerraa

ваш вариант предусматривает указание конкретных символов (aabbcc)

omg

outtaspace ★★★
()

Ничего нового, сборник из уже предложенных вариантов

awk -F'/' '{gsub("..","&;",$2); print $1"/;"$2}'

sdio ★★★★★
()
Ответ на: комментарий от sspphheerraa
#!/bin/bash

echo 'лишить/BBLLNN
 отбой/IIIi
 отбойIIIi
способ/IIIiIhIk' |
awk -F'/' '$2{gsub("..","&;",$2); $0=$1"/;"$2} 1'
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.