<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Удаление строк</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9597.html</link>
    <description>Всем здравствовать!&lt;br&gt;&lt;br&gt;Есть 1 файл. Со строками.&lt;br&gt;В каждой строке есть бла-бла-бла IP-адрес бла-бла-бла.&lt;br&gt;То есть текст и в нём IP-адрес.&lt;br&gt;Есть 2 файл. Чисто с одними IP-адресами.&lt;br&gt;&lt;br&gt;Нужно удалить из файла 1 все строки,&lt;br&gt;в которых встречаются ip из файла 2.&lt;br&gt;&lt;br&gt;&#064;f2 = &amp;lt;FILE2&amp;gt;;&lt;br&gt;foreach $str2 (&#064;f2) &#123;&lt;br&gt;    chomp $str2;&lt;br&gt;    while ($str1 = &amp;lt;FILE1&amp;gt;) &#123;&lt;br&gt;        $str1 =~ m/(&#092;d&#123;1,3&#125;&#092;.&#092;d&#123;1,3&#125;&#092;.&#092;d&#123;1,3&#125;&#092;.&#092;d&#123;1,3&#125;)/g;&lt;br&gt;        if ( $1 ne $str2) &#123;&lt;br&gt;            print $str1;&lt;br&gt;        &#125;&lt;br&gt;    &#125;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;Запутался я с этими циклами.&lt;br&gt;Не получается. Удаляет только одну строку из файла 1,&lt;br&gt;в которой есть первый ip из файла 2.&lt;br&gt;Подскажите?&lt;br&gt;</description>

<item>
    <title>Удаление строк (romiks)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9597.html#10</link>
    <pubDate>Mon, 10 Dec 2012 11:32:56 GMT</pubDate>
    <description>&amp;gt; а вот скажите, пожалуйста, с какого это бы седу удалять по регэкспу &lt;br&gt;&amp;gt; $ip&#092;$ (ip адрес+конец строки), если у вас ip находится в *середине* &lt;br&gt;&amp;gt; строки? откуда взяться символу конца строки посреди стоки?&lt;br&gt;&lt;br&gt;Согласен! Косяк мой. Не туда смотрел, блин.&lt;br&gt;Всё работает.&lt;br&gt;&lt;br&gt;text1 192.168.1.1&lt;br&gt;text2 192.168.2.1&lt;br&gt;text2 192.168.2.11&lt;br&gt;text3 192.168.3.1&lt;br&gt;&lt;br&gt;sed -i &quot;&quot; &quot;/$i$/d&quot; file1&lt;br&gt;&lt;br&gt;text1 192.168.1.1&lt;br&gt;text2 192.168.2.11&lt;br&gt;text3 192.168.3.1&lt;br&gt;&lt;br&gt;Простите меня! )))&lt;br&gt;</description>
</item>

<item>
    <title>Удаление строк (romiks)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9597.html#9</link>
    <pubDate>Mon, 10 Dec 2012 11:21:04 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; close FH; &lt;br&gt;&amp;gt; open FH, &apos;file1&apos;; &lt;br&gt;&amp;gt; while (&amp;lt;FH&amp;gt;) &#123; &lt;br&gt;&amp;gt;  next unless m/&#092;b(&#092;d&#123;1,3&#125;&#092;.&#092;d&#123;1,3&#125;&#092;.&#092;d&#123;1,3&#125;&#092;.&#092;d&#123;1,3&#125;)&#092;b/; &lt;br&gt;&amp;gt;  print $_ unless exists $ips&#123;$1&#125;; &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; close FH;&#091;/code&#093; &lt;br&gt;&amp;gt; Идея с хешем, думаю, понятна.&lt;br&gt;&amp;gt; PS. На работоспособность не проверял, если что.&lt;br&gt;&lt;br&gt;Да! Работает! Спасибо!&lt;br&gt;</description>
</item>

<item>
    <title>Удаление строк (qqq)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9597.html#8</link>
    <pubDate>Mon, 10 Dec 2012 10:50:47 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; Я - да, не помогает. Причём, в различных вариациях.&lt;br&gt;&amp;gt; И с двумя кавычками, и с одной. Результат один.&lt;br&gt;&amp;gt; Потому как у sed&apos;а своё &quot;понимание&quot; $(конец строки) , &lt;br&gt;&amp;gt; а у sh - своё (переменная) &lt;br&gt;&amp;gt; &#091;code&#093; &lt;br&gt;&amp;gt; cat file1 &lt;br&gt;&amp;gt; text1 192.168.1.1 text &lt;br&gt;&amp;gt; text2 192.168.2.1 text &lt;br&gt;&amp;gt; text2 192.168.2.11 text &lt;br&gt;&amp;gt; text3 192.168.3.1 text &lt;br&gt;&lt;br&gt;а вот скажите, пожалуйста, с какого это бы седу удалять по регэкспу $ip&#092;$ (ip адрес+конец строки), если у вас ip находится в *середине* строки? откуда взяться символу конца строки посреди стоки?&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Удаление строк (romiks)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9597.html#7</link>
    <pubDate>Mon, 10 Dec 2012 10:40:34 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt; /^ip$/d не проходит, не понимает он конец строки $ (не понимает имеенно &lt;br&gt;&amp;gt;&amp;gt; в sh скрипте) &lt;br&gt;&amp;gt; нужно экранирование, т.е.&lt;br&gt;&amp;gt; for a in &#096;cat /path/to/file2&#096;; do sed -i -e &quot;/$a&#092;$/d&quot; path/to/file1; done &lt;br&gt;&amp;gt; если IP действительно стоит в конце строки. Зачастую перед &quot;концом&quot; стоки еще &lt;br&gt;&amp;gt; стоит пробел, и тогда регэксп не отработает, следует видоизменить на &quot;/$a &lt;br&gt;&amp;gt; /d&quot;.&lt;br&gt;&amp;gt; Ну или у вас могут быть какие-то другие характерные признаки, если IP &lt;br&gt;&amp;gt; стоит в тексте между другими словами/символами, тогда добавьте два пробела &quot;/ &lt;br&gt;&amp;gt; $a /d&quot;. В общем, экспериментируйте.&lt;br&gt;&lt;br&gt;А вы сами пробовали с экранированием?&lt;br&gt;Я - да, не помогает. Причём, в различных вариациях.&lt;br&gt;И с двумя кавычками, и с одной. Результат один.&lt;br&gt;&lt;br&gt;Потому как у sed&apos;а своё &quot;понимание&quot; $(конец строки) ,&lt;br&gt;а у sh - своё (переменная)&lt;br&gt;&#091;code&#093;&lt;br&gt;cat file1&lt;br&gt;text1 192.168.1.1 text&lt;br&gt;text2 192.168.2.1 text&lt;br&gt;text2 192.168.2.11 text&lt;br&gt;text3 192.168.3.1 text&lt;br&gt;&lt;br&gt;&lt;br&gt;cat file2&lt;br&gt;192.168.2.1&lt;br&gt;&lt;br&gt;&lt;br&gt;cat test.sh&lt;br&gt;&lt;br&gt;/bin/sh&lt;br&gt;ip=&quot;file2&quot;&lt;br&gt;for i in $(cat $&#123;ip&#125;);</description>
</item>

<item>
    <title>Удаление строк (XAnder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9597.html#6</link>
    <pubDate>Mon, 10 Dec 2012 10:03:53 GMT</pubDate>
    <description>&amp;gt; Есть 1 файл. Со строками.&lt;br&gt;&amp;gt; В каждой строке есть бла-бла-бла IP-адрес бла-бла-бла.&lt;br&gt;&amp;gt; То есть текст и в нём IP-адрес.&lt;br&gt;&amp;gt; Есть 2 файл. Чисто с одними IP-адресами.&lt;br&gt;&amp;gt; Нужно удалить из файла 1 все строки, &lt;br&gt;&amp;gt; в которых встречаются ip из файла 2.&lt;br&gt;&lt;br&gt;&#091;code&#093;my &#037;ips = ();&lt;br&gt;open FH, &apos;file2&apos;;&lt;br&gt;while (&amp;lt;FH&amp;gt;) &#123;&lt;br&gt;chomp;&lt;br&gt;$ips&#123;$_&#125; = 1;&lt;br&gt;&#125;&lt;br&gt;close FH;&lt;br&gt;&lt;br&gt;open FH, &apos;file1&apos;;&lt;br&gt;while (&amp;lt;FH&amp;gt;) &#123;&lt;br&gt;next unless m/&#092;b(&#092;d&#123;1,3&#125;&#092;.&#092;d&#123;1,3&#125;&#092;.&#092;d&#123;1,3&#125;&#092;.&#092;d&#123;1,3&#125;)&#092;b/;&lt;br&gt;print $_ unless exists $ips&#123;$1&#125;;&lt;br&gt;&#125;&lt;br&gt;close FH;&#091;/code&#093;&lt;br&gt;&lt;br&gt;Идея с хешем, думаю, понятна.&lt;br&gt;&lt;br&gt;PS. На работоспособность не проверял, если что.&lt;br&gt;</description>
</item>

<item>
    <title>Удаление строк (qqq)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9597.html#5</link>
    <pubDate>Mon, 10 Dec 2012 09:20:42 GMT</pubDate>
    <description>&amp;gt; Проблема вылазит, в шеловском скрипте удаляет, скажем, кроме 192.168.1.3 &lt;br&gt;&amp;gt; и ещё кучу таких как 192.168.1.32, 192.168.1.39 и иже с ним.&lt;br&gt;&amp;gt; как указать sed&apos;у конец строки?&lt;br&gt;&amp;gt; /^ip$/d не проходит, не понимает он конец строки $ (не понимает имеенно &lt;br&gt;&amp;gt; в sh скрипте) &lt;br&gt;&lt;br&gt;нужно экранирование, т.е. &lt;br&gt;&lt;br&gt;for a in &#096;cat /path/to/file2&#096;; do sed -i -e &quot;/$a&#092;$/d&quot; path/to/file1; done&lt;br&gt;&lt;br&gt;если IP действительно стоит в конце строки. Зачастую перед &quot;концом&quot; стоки еще стоит пробел, и тогда регэксп не отработает, следует видоизменить на &quot;/$a /d&quot;. &lt;br&gt;&lt;br&gt;Ну или у вас могут быть какие-то другие характерные признаки, если IP стоит в тексте между другими словами/символами, тогда добавьте два пробела &quot;/ $a /d&quot;. В общем, экспериментируйте.&lt;br&gt;</description>
</item>

<item>
    <title>Удаление строк (romiks)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9597.html#4</link>
    <pubDate>Mon, 10 Dec 2012 08:57:16 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Всем здравствовать!&lt;br&gt;&amp;gt;&amp;gt; Есть 1 файл. Со строками.&lt;br&gt;&amp;gt;&amp;gt; В каждой строке есть бла-бла-бла IP-адрес бла-бла-бла.&lt;br&gt;&amp;gt;&amp;gt; То есть текст и в нём IP-адрес.&lt;br&gt;&amp;gt;&amp;gt; Есть 2 файл. Чисто с одними IP-адресами.&lt;br&gt;&amp;gt;&amp;gt; Нужно удалить из файла 1 все строки, &lt;br&gt;&amp;gt;&amp;gt; в которых встречаются ip из файла 2.&lt;br&gt;&amp;gt; for a in &#096;cat /path/to/file2&#096;; do sed -i -e &quot;/$a/d&quot; path/to/file1; done &lt;br&gt;&lt;br&gt;Да, пробовал уже, аналогично.&lt;br&gt;Проблема вылазит, в шеловском скрипте удаляет, скажем, кроме 192.168.1.3&lt;br&gt;и ещё кучу таких как 192.168.1.32, 192.168.1.39 и иже с ним.&lt;br&gt;как указать sed&apos;у конец строки?&lt;br&gt;/^ip$/d не проходит, не понимает он конец строки $ (не понимает имеенно в sh скрипте)&lt;br&gt;</description>
</item>

<item>
    <title>Удаление строк (romiks)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9597.html#3</link>
    <pubDate>Mon, 10 Dec 2012 08:48:53 GMT</pubDate>
    <description>&amp;gt; А grep использовать не судьба (grep -vf ..)?&lt;br&gt;&lt;br&gt;Да и на sed можно (sed -i &apos;&apos; /ip/d)&lt;br&gt;Но нужно на perl&lt;br&gt;</description>
</item>

<item>
    <title>Удаление строк (qqq)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9597.html#2</link>
    <pubDate>Mon, 10 Dec 2012 08:46:30 GMT</pubDate>
    <description>&amp;gt; Всем здравствовать!&lt;br&gt;&amp;gt; Есть 1 файл. Со строками.&lt;br&gt;&amp;gt; В каждой строке есть бла-бла-бла IP-адрес бла-бла-бла.&lt;br&gt;&amp;gt; То есть текст и в нём IP-адрес.&lt;br&gt;&amp;gt; Есть 2 файл. Чисто с одними IP-адресами.&lt;br&gt;&amp;gt; Нужно удалить из файла 1 все строки, &lt;br&gt;&amp;gt; в которых встречаются ip из файла 2.&lt;br&gt;&lt;br&gt;for a in &#096;cat /path/to/file2&#096;; do sed -i -e &quot;/$a/d&quot; path/to/file1; done&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
