LINUX.ORG.RU

sed. Замена шаблона в тексте последовательными номерами.


0

1

Добрый день, уважаемые!

Не подскажете как при помощи sed сделать такое:

Заменить все вхождения SAMPLEPATTERN на последовательные номера 01, 02, 03 и т.д. Может быть для этого есть специнструмент, не sed? Спасибо.

★★

такое проще на перле. как мне кажется

lazyklimm ★★★★★
()
$ echo -e 'test test\ntest' |awk '{while(sub("st",sprintf("%02d",i++)));print}'
te00 te01
te03
anonymous
()
Ответ на: комментарий от madcore

Ух ты черт! Спасибо огромное. Сколько вариантов!

Я вот как раз нагуглил одну вещь на sed, но не могу разобраться. Там вместо подстроки поиска вставляется вывод команды на bash

http://www.linuxquestions.org/questions/linux-newbie-8/replace-sequential-num...

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

Да мне не обязательно совсем дополнять нулями.

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

Только что-то с нумерацией не совсем то нужно...

у меня в файле не все строчки содержат шаблон, и нумерация получается вот такого вида:

cat 123
test
test
123
test
test
123
test
123
test
test
test

cat 123 | perl -pe 'BEGIN {$i=0}; s/st/$i/ig; $i++'
te0
te1
123
te3
te4
123
te6
123
te8
te9

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

Майн гот!!!

Простите меня дремучего! И еще раз спасибо. Теперь буду разбираться с этой черной магией.

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

> perl -pe 'BEGIN {$i=0}; $i++ if s/st/$i/ig'

perl -pe s/st/\$i++/ge
arsi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.