Вставить знак через определенное количество символов

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

sedikpoll
Сообщения: 100

Вставить знак через определенное количество символов

Сообщение sedikpoll »

Есть текст следующего содержания "abbbabababaabab", нужно заменить "a" на "q", а "b" на "f".
Делаю это так

Код: Выделить всё

sed 's/a/q/g;s/b/f/g'
Теперь встала необходимость добавить символ пробела через каждый три символа. Т.е. получить

Код: Выделить всё

qff fqf qfq fqq fqf

Каким образом это осуществить? Возможно ли это сделать grep'ом? Спасибо.
Спасибо сказали:
Lan4
Сообщения: 339
Статус: hikki
ОС: Arch

Re: Вставить знак через определенное количество символов

Сообщение Lan4 »

Типа так :D

Код: Выделить всё

t=`echo $t|grep -o ".\{1,3\}"`


Ну t - это ваша строка)
Спасибо сказали:
sedikpoll
Сообщения: 100

Re: Вставить знак через определенное количество символов

Сообщение sedikpoll »

Lan4 писал(а):
05.04.2011 22:09
Типа так :D

Код: Выделить всё

t=`echo $t|grep -o ".\{1,3\}"`


Ну t - это ваша строка)

Не совсем то, на выходе получаю

Код: Выделить всё

qff
fqf
qfq
fqq
fqf
Спасибо сказали:
Lan4
Сообщения: 339
Статус: hikki
ОС: Arch

Re: Вставить знак через определенное количество символов

Сообщение Lan4 »

Хм... а у меня после такого в t лежит строка разбитая по пробелам. А в столбик, если просто выполнить

Код: Выделить всё

echo $t|grep -o ".\{1,3\}"
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Вставить знак через определенное количество символов

Сообщение watashiwa_daredeska »

sed 's/.\{3\}/& /g'
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Вставить знак через определенное количество символов

Сообщение watashiwa_daredeska »

(sedikpoll) писал(а):Спасибо, ваш вариант то что нужно.
Не могли бы вы более подробно описать прицип работы?

«.» — любой символ,
«\{3\}» — повторить 3 раза,
«&» — подставить всё, что подошло под регулярное выражение в первой части команды «s».
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Вставить знак через определенное количество символов

Сообщение drBatty »

sedikpoll писал(а):
05.04.2011 22:02
Есть текст следующего содержания "abbbabababaabab", нужно заменить "a" на "q", а "b" на "f".
Делаю это так

вообще-то y/ab/qf/
watashiwa_darede... писал(а):
06.04.2011 08:32
sed 's/.\{3\}/& /g'

я-бы перевёл на русский так: заменить три символа, на эти символы плюс пробел.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: Вставить знак через определенное количество символов

Сообщение t.t »

drBatty писал(а):
06.04.2011 10:11
sedikpoll писал(а):
05.04.2011 22:02
Есть текст следующего содержания "abbbabababaabab", нужно заменить "a" на "q", а "b" на "f".
Делаю это так

вообще-то y/ab/qf/

Ещё вариант:

Код: Выделить всё

tr ab qf
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Вставить знак через определенное количество символов

Сообщение drBatty »

t.t писал(а):
06.04.2011 11:06
tr ab qf

не...
1) по русски не работает

$

echo "русский текст" | tr "т" "t" t�t�t�t�кий ttекt�tt



2) лишняя сущность. потом всё равно пробелы пихать надо.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Nazyvaemykh
Сообщения: 438
Статус: Подопытный участник

Re: Вставить знак через определенное количество символов

Сообщение Nazyvaemykh »

drBatty писал(а):
06.04.2011 11:40
t.t писал(а):
06.04.2011 11:06
tr ab qf

не...
1) по русски не работает

$

echo "русский текст" | tr "т" "t" t�t�t�t�кий ttекt�tt



Не знаю, у меня все работает. Нужно только выбирать качественные реализации:
$ echo 'русский текст'|/opt/plan9/bin/tr "т" "t"
русский tексt
¡ Страсть к разрушению есть творческая страсть!
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Вставить знак через определенное количество символов

Сообщение drBatty »

Nazyvaemykh писал(а):
06.04.2011 11:48
Не знаю, у меня все работает. Нужно только выбирать качественные реализации:

о... а у меня даже /opt/ нету. (точнее он пуст)
ибо не Ъ
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: