<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; посмотрите мой sed скрипт.]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=14190&amp;type=atom" />
	<updated>2011-06-11T13:06:15Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=14190</id>
		<entry>
			<title type="html"><![CDATA[Re: посмотрите мой sed скрипт.]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=187000#p187000" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>не могу найти, где такой синтаксис s описан...</p><p>ЗЫ: уже почти 3, а сервис до сих пор лежит...</p></blockquote></div><p>заработал сервер.</p><p>обычно пишут s/abc/def/, но вместо слеша можно использовать любой символ, например s~abc~drf~ это тоже самое.</p><p>ненавижу заборы http:\/\/drbatty\.ru\/sed&nbsp; <img src="https://linuxforum.ru/img/smilies/ac.gif" alt="ac" /></p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2011-06-11T13:06:15Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=187000#p187000</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: посмотрите мой sed скрипт.]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=186971#p186971" />
			<content type="html"><![CDATA[<p>// fixed<br /></p><div class="codebox"><pre><code>#!/bin/sed -rnf

/^Download:\s+/{
    s~.*/~~
    h
}

/^MD5 sum:\s+/{
    s///
    G
    s/\n/ /
    p
}</code></pre></div><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>s~.*/~~ заменяет любые символы в любом количестве (да побольше!) за которыми идёт слеш на &quot;&quot;.</p></blockquote></div><p>не могу найти, где такой синтаксис s описан...</p><p>ЗЫ: уже почти 3, а сервис до сих пор лежит...</p>]]></content>
			<author>
				<name><![CDATA[Fat-Zer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11911</uri>
			</author>
			<updated>2011-06-11T10:55:03Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=186971#p186971</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: посмотрите мой sed скрипт.]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=186956#p186956" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>растолкуйте, что делает &quot;s~.*/~~&quot; и &quot;s///&quot;</p><p>ЗЫ: про комманды g и h не знал... поэтому всё так и получилось громостко и запутано...</p></blockquote></div><p><a href="http://drbatty.ru/sed">http://drbatty.ru/sed</a> (Сегодня с 6:00 до 14:00 по московскому времени проводятся плановые работы)</p><p>s~.*/~~ заменяет любые символы в любом количестве (да побольше!) за которыми идёт слеш на &quot;&quot;.<br />например &quot;Download: <a href="http://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.bz2\">http://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.bz2&quot;</a> заменится на &quot;autoconf-2.68.tar.bz2&quot;</p><p>s/// это команда, которая заменяет регулярку на &quot;&quot;.</p><p>регулярное выражение == компилируемая программа. И её можно использовать много раз.</p><p>/ABC/p # ищем строку с ABC и её печатаем<br />s//DEF/g # заменяем ранее скомпилированое выражение (ABC) на DEF. Причём, в первый раз найдётся лишь первое совпадение, а в этот раз - все ABC заменяются на DEF.</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2011-06-11T09:43:42Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=186956#p186956</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: посмотрите мой sed скрипт.]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=186938#p186938" />
			<content type="html"><![CDATA[<p>растолкуйте, что делает &quot;s~.*/~~&quot;</p><p>ЗЫ: про комманды g и h не знал... поэтому всё так и получилось громостко и запутано...</p>]]></content>
			<author>
				<name><![CDATA[Fat-Zer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11911</uri>
			</author>
			<updated>2011-06-11T09:08:11Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=186938#p186938</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: посмотрите мой sed скрипт.]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=186608#p186608" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>надо выдрать имя скачанного файла и контрольную сумму. и записать их красиво</p></blockquote></div><p>ну вот как-то так:<br /></p><div class="codebox"><pre><code>#!/bin/sed -rnf

/^Download:\s+/{
    s~.*/~~
    h
}

/^MD5 sum:\s+/{
    s///
    H
    g
    s/.+\n/ /p
    z
    h
}</code></pre></div><p>согласитесь - всё намного понятнее?</p><p>//fixed<br />дополнительная фича - если ссылки не было, то вообще ничего не напечатает.</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2011-06-10T08:27:55Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=186608#p186608</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: посмотрите мой sed скрипт.]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=185811#p185811" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>emulek пишет:</cite><blockquote><p>можно конечно. только, напишите по-русски, ЧТО этот скрипт делает (можно только для себя).</p></blockquote></div><p>в первом посте есть пример исходных данных и результата. надо выдрать имя скачанного файла и контрольную сумму. и записать их красиво для &quot;md5sum -c&quot;</p>]]></content>
			<author>
				<name><![CDATA[Fat-Zer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11911</uri>
			</author>
			<updated>2011-06-07T09:05:20Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=185811#p185811</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: посмотрите мой sed скрипт.]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=185708#p185708" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>зато когда люди видят такое, то понимают, что ты действительно не из этого мира)).</p></blockquote></div><p>ну тема ведь &quot;посмотрите мой скрипт&quot;? смотреть неудобно.<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>+писал в командной строке, поэтому разбивать на строки не хотелось...</p></blockquote></div><p>пишите в Vim&#039;е. там и подсветка есть, и вообще... Удобно!<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>а кроме того, чтобы записать так, чтобы белые люди это понимали ничего нет? например нерационального использования? лишних команд?</p></blockquote></div><p>дело в том, что разбивать команды вы можете как угодно, по синтаксису sed всё едино - точка с запятой или перевод строки.<br />Однако, есть множество команд (a,i,c,w,W,r,R и ещё какие-то), где параметр &quot;до конца строки&quot;. Вам придётся писать так:<br /></p><div class="codebox"><pre><code>sed -e &#039;a какой-то текст&#039; -e &#039;a ещё текст&#039; -e &#039;w имя файла&#039;</code></pre></div><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>как вообще объеденить это всё в одну команду?</p></blockquote></div><p>зачем?<br />можно конечно. только, напишите по-русски, ЧТО этот скрипт делает (можно только для себя).<br />Hint: в sed есть блоки как в C:<br /></p><div class="codebox"><pre><code>/условие/{
 # какие-то команды по условию
}
# безусловные команды</code></pre></div><p>Кстати, используемая вами d это тоже на самом деле команда условного перехода.<br /></p><div class="codebox"><pre><code>/условие/d
# здесь команды, которые выполняются если невыполнено условие</code></pre></div>]]></content>
			<author>
				<name><![CDATA[emulek]]></name>
				<uri>https://linuxforum.ru/profile.php?id=17759</uri>
			</author>
			<updated>2011-06-07T05:45:07Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=185708#p185708</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: посмотрите мой sed скрипт.]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=185678#p185678" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>одностроки - маздай</p></blockquote></div><p>зато когда люди видят такое, то понимают, что ты действительно не из этого мира)).<br />+писал в командной строке, поэтому разбивать на строки не хотелось...<br />а кроме того, чтобы записать так, чтобы белые люди это понимали ничего нет? например нерационального использования? лишних команд? и как вообще объеденить это всё в одну команду?</p>]]></content>
			<author>
				<name><![CDATA[Fat-Zer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11911</uri>
			</author>
			<updated>2011-06-06T23:48:34Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=185678#p185678</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: посмотрите мой sed скрипт.]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=185616#p185616" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>cat src | sed -r &#039;/Download: /!d;s/$/ /;s/.+\///;x;s/.*//;N;s/MD5 sum: //;p;s/.*//;x&#039; | sed -r &#039;/^ *$/d;N;s/\n/&nbsp; /;s/ +$//&#039; &gt;md5sum</p></blockquote></div><p>одностроки - маздай<br /></p><div class="codebox"><pre><code>/Download: /!d
s/$/ /
s/.+\///
x
s/.*//
N;
s/MD5 sum: //
p
s/.*//;
x
&#039; 
| sed -r &#039;
/^ *$/d
N
s/\n/  /
s/ +$//</code></pre></div>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2011-06-06T16:54:30Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=185616#p185616</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[посмотрите мой sed скрипт.]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=185563#p185563" />
			<content type="html"><![CDATA[<p>Написал свой первый sed скрипт для преобразования&nbsp; из такого:<br /></p><div class="codebox"><pre><code>Autoconf (2.68) - 1,350 KB:
Home page: http://www.gnu.org/software/autoconf/
Download: http://ftp.gnu.org/gnu/autoconf/autoconf-2.68.tar.bz2
MD5 sum: 864d785215aa60d627c91fcb21b05b07
Automake (1.11.1) - 1,042 KB:
Home page: http://www.gnu.org/software/automake/
Download: http://ftp.gnu.org/gnu/automake/automake-1.11.1.tar.bz2
MD5 sum: c2972c4d9b3e29c03d5f2af86249876f</code></pre></div><p>в файл для проверки контрольных сумм:<br /></p><div class="codebox"><pre><code>864d785215aa60d627c91fcb21b05b07  autoconf-2.68.tar.bz2
c2972c4d9b3e29c03d5f2af86249876f  automake-1.11.1.tar.bz2</code></pre></div><p>сам скрипт:<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">cat src | sed -r &#039;/Download: /!d;s/$/ /;s/.+\///;x;s/.*//;N;s/MD5 sum: //;p;s/.*//;x&#039; | sed -r &#039;/^ *$/d;N;s/\n/&nbsp; /;s/ +$//&#039; &gt;md5sum</div><br />Собственно, критика? Что не так7 что можно сделать проще?</p>]]></content>
			<author>
				<name><![CDATA[Fat-Zer]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11911</uri>
			</author>
			<updated>2011-06-06T13:04:08Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=185563#p185563</id>
		</entry>
</feed>
