<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Требуются помощь по SED. Два файла.</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/8135.html</link>
    <description>помогите, пожалуйста. очень трудно даются маны :(&lt;br&gt;&lt;br&gt;есть file1. нужно: &lt;br&gt;&lt;br&gt;удалить все строки, ПОСЛЕ строки, содержащей metka_begin &lt;br&gt;ПОКА не встретиться строка, содержащая metka_end &lt;br&gt;&lt;br&gt;строки, содержащие metka_begin и metka_end трогать не нужно. их оставить. _только между ними_ удалить. &lt;br&gt;&lt;br&gt;маленькая оговорка: строка, содержащая metka_end встречается неоднократно, а содержащая metka_begin - только один раз. но удалить нужно между строками С metka_begin ПО ближайший metka_end. &lt;br&gt;&lt;br&gt;после чего, в ту же область в тот же file1 вставить всё содержимое другого файла (file2)&lt;br&gt;</description>

<item>
    <title>Требуются помощь по SED. Два файла. (bzmn)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/8135.html#11</link>
    <pubDate>Sun, 08 Mar 2009 19:51:10 GMT</pubDate>
    <description>&amp;gt;&amp;gt; &amp;lt;list name=&quot;IpAccessList&quot;&amp;gt; - metka_begin. В качестве нее скормил IpAccessList&lt;br&gt;&amp;gt;&amp;gt; &amp;lt;/list&amp;gt; - metka_end&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;То есть тебе надо обрабатывать XML? Тогда выкидывай и перл и сед, &lt;br&gt;&amp;gt;потому что они с ним в общем случае не справляются. &lt;br&gt;&amp;gt;Лучше либо парсить XML напрямую, либо использовать http://sourceforge.net/projects/xmlstar/ . &lt;br&gt;&lt;br&gt;на самом деле, только одну из его частей, вставляя подготовленный кусок. просто программа хранит конфигурацию в таком виде. задача уже решена, в общем-то при помощи перл, и всё прекрасно работает. но за наводку, безусловно, спасибо.&lt;br&gt;</description>
</item>

<item>
    <title>Требуются помощь по SED. Два файла. (bzmn)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/8135.html#10</link>
    <pubDate>Sun, 08 Mar 2009 19:48:46 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;/metka_begin/,/metka_end/&#123; &lt;br&gt;&amp;gt;  /metka_begin/&#123; &lt;br&gt;&amp;gt;    r file2 &lt;br&gt;&amp;gt;    b &lt;br&gt;&amp;gt;  &#125; &lt;br&gt;&amp;gt;  /metka_end/b &lt;br&gt;&amp;gt;  d &lt;br&gt;&amp;gt;&#125; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;$ sed -f script.sed file1 &lt;br&gt;&lt;br&gt;спасибо, огромное спасибо за вложенный труд в ответ.&lt;br&gt;</description>
</item>

<item>
    <title>Требуются помощь по SED. Два файла. (ASN)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/8135.html#9</link>
    <pubDate>Sun, 08 Mar 2009 18:46:03 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;строки, содержащие metka_begin и metka_end трогать не нужно. их оставить. _только между &lt;br&gt;&amp;gt;ними_ удалить. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;маленькая оговорка: строка, содержащая metka_end встречается неоднократно, а содержащая metka_begin - только &lt;br&gt;&amp;gt;один раз. но удалить нужно между строками С metka_begin ПО ближайший &lt;br&gt;&amp;gt;metka_end. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;после чего, в ту же область в тот же file1 вставить всё &lt;br&gt;&amp;gt;содержимое другого файла (file2) &lt;br&gt;&lt;br&gt;$ cat script.sed&lt;br&gt;/metka_begin/,/metka_end/&#123;&lt;br&gt;  /metka_begin/&#123;&lt;br&gt;    r file2&lt;br&gt;    b&lt;br&gt;  &#125;&lt;br&gt;  /metka_end/b&lt;br&gt;  d&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;$ sed -f script.sed file1&lt;br&gt;</description>
</item>

<item>
    <title>Требуются помощь по SED. Два файла. (gaa)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/8135.html#8</link>
    <pubDate>Sun, 08 Mar 2009 18:43:03 GMT</pubDate>
    <description>&amp;gt; &amp;lt;list name=&quot;IpAccessList&quot;&amp;gt; - metka_begin. В качестве нее скормил IpAccessList&lt;br&gt;&amp;gt; &amp;lt;/list&amp;gt; - metka_end&lt;br&gt;&lt;br&gt;То есть тебе надо обрабатывать XML? Тогда выкидывай и перл и сед, потому что они с ним в общем случае не справляются.&lt;br&gt;Лучше либо парсить XML напрямую, либо использовать http://sourceforge.net/projects/xmlstar/ .&lt;br&gt;</description>
</item>

<item>
    <title>Требуются помощь по SED. Два файла. (angra)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/8135.html#7</link>
    <pubDate>Sun, 08 Mar 2009 15:45:38 GMT</pubDate>
    <description>Как будет время советую почитать &quot;Mastering regular expressions&quot; http://oreilly.com/catalog/9781565922570/. Можно найти в сети, говорят даже не русском. Умение работать с регулярными выражениями очень сильно помогает админу и программисту, фактически must have. &lt;br&gt;Однако в данном случае проблема была в синтаксисе самого оператора m//, как можно заметить / ограничивает регулярное выражение, но также встречается в &amp;lt;/list&amp;gt;. Решить можно либо экранированием: /&amp;lt;&#092;/list&amp;gt;/(возможно понадобится еще учитывать экранирование от самого cmd и тогда получим /&amp;lt;&#092;&#092;/list&amp;gt;/) либо заменой / на другой символ с явным указанием оператора m, например m&amp;#124;&amp;lt;/list&amp;gt;&amp;#124; или m#&amp;lt;/list&amp;gt;#. Второй способ удобней если слешей много.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Требуются помощь по SED. Два файла. (bzmn)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/8135.html#6</link>
    <pubDate>Sun, 08 Mar 2009 15:11:43 GMT</pubDate>
    <description>&amp;gt;На всякий случай добавлю пару моментов. &lt;br&gt;&amp;gt;Если вопреки условиям задачи встретится еще раз пара metka_begin/metka_end, то для нее &lt;br&gt;&amp;gt;тоже будет произведена замена на содержимое file2. &lt;br&gt;&amp;gt;Если metka_end не встретится вообще, то удаление строк будет до конца файла &lt;br&gt;&amp;gt;и вставки из file2 не будет. &lt;br&gt;&lt;br&gt;пара не встретится. metka_begin только один. metka_end - много. но ОТ/ДО - пара, получается, одна. но за уточнения, безусловно, спасибо.&lt;br&gt;&lt;br&gt;тут щас была маленькая загвоздка. metka_end и metka_begin - условные ведь обозначения были.&lt;br&gt;&lt;br&gt;на самом деле, там так:&lt;br&gt;&lt;br&gt;&amp;lt;list name=&quot;IpAccessList&quot;&amp;gt; - metka_begin. В качестве нее скормил IpAccessList&lt;br&gt;&amp;lt;/list&amp;gt; - metka_end. Возникла маленькая загвоздка, ибо не мог скормить просто list, потому что в удаляемом содержимом встречается &amp;lt;/listitem&amp;gt;. Попытался скормить полностью &amp;lt;/list&amp;gt; - перл заругался на синтаксис. Но когда отдал ему list&amp;gt; - вроде, проканало.&lt;br&gt;&lt;br&gt;сейчас проверил на рабочих файлах - вроде бы, всё получилось. пока не скормил итог программе, которая с ними работает, но но </description>
</item>

<item>
    <title>Требуются помощь по SED. Два файла. (angra)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/8135.html#5</link>
    <pubDate>Sun, 08 Mar 2009 14:59:29 GMT</pubDate>
    <description>На всякий случай добавлю пару моментов. &lt;br&gt;Если вопреки условиям задачи встретится еще раз пара metka_begin/metka_end, то для нее тоже будет произведена замена на содержимое file2. &lt;br&gt;Если metka_end не встретится вообще, то удаление строк будет до конца файла и вставки из file2 не будет. &lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Требуются помощь по SED. Два файла. (bzmn)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/8135.html#4</link>
    <pubDate>Sun, 08 Mar 2009 14:10:36 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;Мне лично лень учить синтаксис sed/awk/grep/итд, особенно с учетом их вариаций, значительно &lt;br&gt;&amp;gt;проще выучить Perl и использовать его как swiss army knife. Кстати &lt;br&gt;&amp;gt;perl под винду есть, мне известно аж три варианта - cygwin, &lt;br&gt;&amp;gt;active perl, strawberry perl - плюс в денвере вроде есть свой &lt;br&gt;&amp;gt;минимальный вариант. &lt;br&gt;&amp;gt;Если заинтересует, то однострочник на perl: &lt;br&gt;&amp;gt;perl -ne &apos;BEGIN&#123;local $/=undef;open F,&quot;file2&quot;;$t=&amp;lt;F&amp;gt;;close F&#125;;print unless $f;$f=1 if /metka_begin/;if (/metka_end/ &amp; $f)&#123;print $t,$_;$f=0&#125;;&apos; file1&lt;br&gt;&amp;gt;Экранирование дано для bash, так что для cmd нужно будет модифицировать. Выводит &lt;br&gt;&amp;gt;на stdout, но если добавить -i, то будет менять внутри файла. &lt;br&gt;&amp;gt;Можно давать много файлов за раз.&lt;br&gt;&lt;br&gt;Друг! Спасибо тебе. Попробовал денверский на 700 кб - результат удовлетворительный (пока, правда, на тестовых файлах, но, думаю, и на рабочих будет). Из синтаксиса только &apos; заменил на &quot;.&lt;br&gt;&lt;br&gt;Спасибо, спасибо!&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Требуются помощь по SED. Два файла. (angra)</title>
    <link>https://www.opennet.dev/openforum/vsluhforumID9/8135.html#3</link>
    <pubDate>Sun, 08 Mar 2009 13:34:39 GMT</pubDate>
    <description>Мне кажется как раз вставка из другого файла будет основной проблемой, а вот удаление строк по указанным критериям вполне возможно в sed. Специалисты по sed на этом форуме есть, остается их дождаться :)&lt;br&gt;Мне лично лень учить синтаксис sed/awk/grep/итд, особенно с учетом их вариаций, значительно проще выучить Perl и использовать его как swiss army knife. Кстати perl под винду есть, мне известно аж три варианта - cygwin, active perl, strawberry perl - плюс в денвере вроде есть свой минимальный вариант. &lt;br&gt;Если заинтересует, то однострочник на perl: &lt;br&gt;perl -ne &apos;BEGIN&#123;local $/=undef;open F,&quot;file2&quot;;$t=&amp;lt;F&amp;gt;;close F&#125;;print unless $f;$f=1 if /metka_begin/;if (/metka_end/ &amp; $f)&#123;print $t,$_;$f=0&#125;;&apos; file1&lt;br&gt;Экранирование дано для bash, так что для cmd нужно будет модифицировать. Выводит на stdout, но если добавить -i, то будет менять внутри файла. Можно давать много файлов за раз.&lt;br&gt;</description>
</item>

</channel>
</rss>
