<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Linux Forum &mdash; Прошу помощи с sed]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=7187</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=7187&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Прошу помощи с sed».]]></description>
		<lastBuildDate>Mon, 11 Oct 2010 15:05:13 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Прошу помощи с sed]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=99821#p99821</link>
			<description><![CDATA[<div class="quotebox"><cite>ufomen пишет:</cite><blockquote><p>По идее<br />$ знак конца строки,<br />.* - любые символы в любом кол-ве<br />\. экранированный знак точки</p><p>Тоесть&nbsp; это как-бы должно значить &quot;заменить все с конца стоки (с права на лево) до первой найденной - точки ничем&quot;</p></blockquote></div><p>всё верно. гуглите на тему &quot;жадность звёздочким в sed&quot;. звёздочка пожирает не до первой, а всё, что сможет - точка == любой символ, в том числе и точка. Вот она у вас всё и пожрала. Ибо жадная.</p><p>ищите не &quot;любой символ&quot;, а &quot;любой кроме точки&quot;:<br /><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh">$ echo &quot;123.25.64.6.smtp &gt; 92.45.59.112.58101&quot; | sed &#039;s/\.[^.]*$//&#039;<br />123.25.64.6.smtp &gt; 92.45.59.112<br /></div><br />можно подойти к проблеме с другой стороны: пусть звёздочка жадная, заставим её жрать все точки, кроме одной! и выделим то, что пожрётся:<br /><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh">$ echo &quot;123.25.64.6.smtp &gt; 92.45.59.112.58101&quot; | sed -r &#039;s/(.*)\..*/\1/&#039;<br />123.25.64.6.smtp &gt; 92.45.59.112<br /></div><br />тут 2 звёздочки, регулярка работает слева-направо, потому первая звёздочка жрёт всё, кроме одной точки (мы её явно указали). Это последняя точка, т.к. звёздочка жадная. Второй звёздочке точек уже не достанется.</p><div class="quotebox"><cite>ufomen пишет:</cite><blockquote><p>Мде, регулярки учить нужно...</p></blockquote></div><p>а то!?<br />то, что вы написали, хоть и работает, но слишком много лишнего...</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Mon, 11 Oct 2010 15:05:13 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=99821#p99821</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прошу помощи с sed]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=99100#p99100</link>
			<description><![CDATA[<p>Ну в общем решил сам но не без помощи ))</p><p>Варианты:<br /></p><div class="codebox"><pre><code>awk -F&#039;.&#039; &#039;{print $1&quot;.&quot;$2&quot;.&quot;$3&quot;.&quot;$4}&#039;

sed -s &quot;s/\([0-9]*\.[0-9]*\.[0-9]*\.[0-9]*\)\(\.[0-9]*\)/\1/&quot;

sed -s &quot;s/\(.*\)\(\..*$\)/\1/&quot;</code></pre></div><p>Мде, регулярки учить нужно... </p><p>P.S. Как поставить РЕШЕНО не знаю )</p>]]></description>
			<author><![CDATA[null@example.com (ufomen)]]></author>
			<pubDate>Fri, 08 Oct 2010 14:07:09 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=99100#p99100</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прошу помощи с sed]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=98587#p98587</link>
			<description><![CDATA[<div class="quotebox"><cite>CyberDaemon пишет:</cite><blockquote><p>sed &#039;s/\.\[^.\]*$//&#039;</p></blockquote></div><p>Попробывал, у меня Ваша конструкция выводит неизмененный список:</p><div class="codebox"><pre><code># cat /tmp/mail2 |sed &#039;s/\.\[^.\]*$//&#039;
123.25.64.6.smtp &gt; 92.45.59.112.58101
92.45.59.112.58101 &gt; 123.25.64.6.smtp
123.25.64.6.smtp &gt; 92.45.59.112.58101</code></pre></div><br /><p>P.S.<br /></p><div class="codebox"><pre><code># cat /etc/issue
CentOS release 4.8 (Final)
Kernel \r on an \m

# rpm -q sed
sed-4.1.2-7.el4</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (ufomen)]]></author>
			<pubDate>Wed, 06 Oct 2010 22:04:57 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=98587#p98587</guid>
		</item>
		<item>
			<title><![CDATA[Re: Прошу помощи с sed]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=98497#p98497</link>
			<description><![CDATA[<p>sed &#039;s/\.\[^.\]*$//&#039;</p>]]></description>
			<author><![CDATA[null@example.com (CyberDaemon)]]></author>
			<pubDate>Wed, 06 Oct 2010 16:20:52 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=98497#p98497</guid>
		</item>
		<item>
			<title><![CDATA[Прошу помощи с sed]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=98398#p98398</link>
			<description><![CDATA[<p>Всем привет, <br />есть список IP вида:</p><div class="codebox"><pre><code># cat /tmp/mail2
123.25.64.6.smtp &gt; 92.45.59.112.58101
92.45.59.112.58101 &gt; 123.25.64.6.smtp
123.25.64.6.smtp &gt; 92.45.59.112.58101</code></pre></div><p>пытаюсь sed рубануть все с конца строки до первой точки:</p><div class="codebox"><pre><code>cat /tmp/mail2 |sed &#039;s/\..*$//&#039;</code></pre></div><p>По идее <br />$ знак конца строки, <br />.* - любые символы в любом кол-ве<br />\. экранированный знак точки </p><p>Тоесть&nbsp; это как-бы должно значить &quot;заменить все с конца стоки (с права на лево) до первой найденной - точки ничем&quot;</p><p>НО на выходе получаю <br /></p><div class="codebox"><pre><code>123
92
123</code></pre></div><p>Почему оно заменяет все до последней встретившейся точки если считать с конца строки?</p><p>С sed опыта мало, погуглил но не пойму почему оно ТАК работает.</p>]]></description>
			<author><![CDATA[null@example.com (ufomen)]]></author>
			<pubDate>Wed, 06 Oct 2010 10:48:10 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=98398#p98398</guid>
		</item>
	</channel>
</rss>
