<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Sed для парсинга dhcp.leases</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/9459.html</link>
    <description>Исходный файл dhcp.leases размер примерно 200 мегабайт или около 18млн записей в формате:&lt;br&gt;&lt;br&gt;lease 10.210.100.254 &#123;&lt;br&gt;  starts 0 2012/03/11 09:52:27;&lt;br&gt;  ends 5 2012/03/16 09:52:27;&lt;br&gt;  tstp 5 2012/03/16 09:52:27;&lt;br&gt;  cltt 0 2012/03/11 09:52:27;&lt;br&gt;  binding state free;&lt;br&gt;  hardware ethernet 00:11:22:33:44:66;&lt;br&gt;  uid &quot;&#092;001&#092;000&#092;021&#092;&quot;3Df&quot;;&lt;br&gt;  set vendor-string = &quot;MSFT 5.0&quot;;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;lease 10.8.234.253 &#123;&lt;br&gt;  starts 4 2011/06/02 11:56:20;&lt;br&gt;  ends 2 2011/06/07 11:56:20;&lt;br&gt;  tstp 2 2011/06/07 11:56:20;&lt;br&gt;  cltt 4 2011/06/02 11:56:20;&lt;br&gt;  binding state free;&lt;br&gt;  hardware ethernet 00:22:33:44:55:27;&lt;br&gt;  uid &quot;&#092;001&#092;000&#092;0363&#037;&#092;000&apos;&quot;;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;Задача убрать все старые записи. Делаю запрос, для того чтобы убить 2011 год:&lt;br&gt;sed -n &apos;:s;/ends . 2011/&#123;:l;n;/&#125;/&#123;bs&#125;;bl&#125;;p&apos; dhcp.leases&lt;br&gt;&lt;br&gt;На выходе получаю у 2011 года одну лишнюю строку &quot;starts 4 2011/06/02 11:56:20;&quot;&lt;br&gt;&lt;br&gt;lease 10.210.100.254 &#123;&lt;br&gt;  starts 0 2012/03/11 09:52:27;&lt;br&gt;  ends 5 2012/03/16 09:52:27;&lt;br&gt;  tstp 5 2012/03/16 09:52:27;&lt;br&gt;  cltt 0 2012/03/11 09:52:27;&lt;br&gt;  binding state free;&lt;br&gt;  hardwa</description>

<item>
    <title>Sed для парсинга dhcp.leases (spions)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/9459.html#4</link>
    <pubDate>Fri, 18 May 2012 06:57:45 GMT</pubDate>
    <description>&amp;gt; если нужна логика, то нужен awk, там есть условия.&lt;br&gt;&amp;gt; примером помочь не могу, т.к. на таком уровне не владею &lt;br&gt;&lt;br&gt;Можно и на уровне sed сделать. Например, вот кусок&lt;br&gt;&lt;br&gt;# напечатать строки, которые стоят ПЕРЕД строками с регулярным выражением regexp&lt;br&gt; sed -n &apos;/regexp/&#123;g;1!p;&#125;;h&apos;&lt;br&gt;&lt;br&gt;но мне не понятно как этот пример совместить с моим.&lt;br&gt;</description>
</item>

<item>
    <title>Sed для парсинга dhcp.leases (slon)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/9459.html#3</link>
    <pubDate>Fri, 18 May 2012 06:32:18 GMT</pubDate>
    <description>если нужна логика, то нужен awk, там есть условия.&lt;br&gt;&lt;br&gt;примером помочь не могу, т.к. на таком уровне не владею&lt;br&gt;</description>
</item>

<item>
    <title>Sed для парсинга dhcp.leases (spions)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/9459.html#2</link>
    <pubDate>Fri, 18 May 2012 06:04:37 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;   tstp 5 2012/03/16 09:52:27; &lt;br&gt;&amp;gt;   cltt 0 2012/03/11 09:52:27; &lt;br&gt;&amp;gt;   binding state free; &lt;br&gt;&amp;gt;   hardware ethernet 00:11:22:33:44:66; &lt;br&gt;&amp;gt;   uid &quot;&#092;001&#092;000&#092;021&#092;&quot;3Df&quot;; &lt;br&gt;&amp;gt;   set vendor-string = &quot;MSFT 5.0&quot;; &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; lease 10.8.234.253 &#123; &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; &#091;/code&#093; &lt;br&gt;&lt;br&gt;Нет. Или тут к сожалению не проходит. &lt;br&gt;&lt;br&gt;Имеем лизу выданную в прошлом году, но действительную в этом.&lt;br&gt;&lt;br&gt;lease 10.8.234.250 &#123;&lt;br&gt;  starts 2 2011/07/26 13:16:09;&lt;br&gt;  ends 0 2012/07/31 13:16:09;&lt;br&gt;  tstp 0 2012/07/31 13:16:09;&lt;br&gt;  cltt 2 2012/07/26 13:16:09;&lt;br&gt;  binding state free;&lt;br&gt;  hardware ethernet 11:22:33:65:73:a4;&lt;br&gt;  uid &quot;&#092;001&#092;034&#092;301&#092;336es&#092;244&quot;;&lt;br&gt;  set vendor-string = &quot;MSFT 5.0&quot;;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;На выходе получаем&lt;br&gt;&lt;br&gt;lease 10.8.234.250 &#123;&lt;br&gt;&#125;&lt;br&gt;А это не верно, т.к. лиза действительная.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Sed для парсинга dhcp.leases (allez)</title>
    <link>https://www.opennet.me/openforum/vsluhforumID9/9459.html#1</link>
    <pubDate>Fri, 18 May 2012 05:17:38 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; lease 10.8.234.253 &#123; &lt;br&gt;&amp;gt;   starts 4 2011/06/02 11:56:20; &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; Как в рамках существующего sed запроса убить строчку, которая выше регулярного выражения? &lt;br&gt;&amp;gt; т.е. хотелось бы получить &lt;br&gt;&amp;gt; lease 10.8.234.253 &#123; &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; Или, чтобы  данная запись просто изчезла из dhcp.leases &lt;br&gt;&amp;gt; Заранее спасибо за помощь.&lt;br&gt;&lt;br&gt;Так подойдет?&lt;br&gt;&#091;code&#093;$ sed -n &apos;:s;/&#092;(starts&#092;&amp;#124;ends&#092;) . 2011/&#123;:l;n;/&#125;/&#123;bs&#125;;bl&#125;;p&apos; dhcp.leases&lt;br&gt;&lt;br&gt;lease 10.210.100.254 &#123;&lt;br&gt;  starts 0 2012/03/11 09:52:27;&lt;br&gt;  ends 5 2012/03/16 09:52:27;&lt;br&gt;  tstp 5 2012/03/16 09:52:27;&lt;br&gt;  cltt 0 2012/03/11 09:52:27;&lt;br&gt;  binding state free;&lt;br&gt;  hardware ethernet 00:11:22:33:44:66;&lt;br&gt;  uid &quot;&#092;001&#092;000&#092;021&#092;&quot;3Df&quot;;&lt;br&gt;  set vendor-string = &quot;MSFT 5.0&quot;;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;lease 10.8.234.253 &#123;&lt;br&gt;&#125;&lt;br&gt;&#091;/code&#093;&lt;br&gt;</description>
</item>

</channel>
</rss>
