LINUX.ORG.RU

Вопрос по sed


0

0

Только начинаю осваивать sed, так что сильно не ругайте, если мой овпрос не очень умён…

Мне нужно найти в файле №1 фрагмент, адекватный регулярному выражению 1. и заменить на него в файле №2 фрагмент, удовлетворяющий регулярному выражению 2.

Как же подступиться к этому деликатному делу?

★★★★★
Ответ на: комментарий от sdio

Спасибо, конечно…

Но я перечитал множество различной документации по sed, и всё равно не понятно…

Я могу вытащить регулярное выражение 'begin\(.*\n.*)*end' из файла №1:

sed -n -e :a -e '/begin/ {s/.*\(begin\(.*\n.*\)*end\).*/\1/;tb;N;ba;:b;p}'

Я могу заменить регулярное выражение '2\(.*\n.*)*3' в файле два на какой-то заданный текст:

sed -e :a -e '/2/ {s/2\.*\n.*)*3/Slackware/;tb;N;ba;:b}'

Но как объединить две эти части в одно целое? Помогите новичку!

anarquista ★★★★★
() автор топика

мда, попробуй для начала лучше awk

soomrack ★★★★★
()

Не знаю, как сделать это только с использованием sed, но я бы сделал так:

sed s/`egrep -o <выражение 1> <файл №1>`/<выражение 2>/ -i <файл №2>

AX ★★★★★
()

давай примеры, а то мне лично нифига не понятно. пример вида: есть файл1 с содержанием таким-то, файл 2 с содержанием таким-то. получить хочу вот это и это.

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

Есть два скрипта сборки…

В одном есть строки: ./configure бла-бла-бла \ дизабл-то енабл-это

В другом тоже есть похожие строки (их количество совсем другое). Нужно заменить то, что во втором скрипте, на то, что в первом.

Объединить сначала этот фрагмент в одну строку (выкинув \) и заменить просто но уже не интересно (: Хочется решить и более общую задачу.

Помогите, плиииз!

anarquista ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.