<?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; Извлечение подстроки]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=36712</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=36712&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Извлечение подстроки».]]></description>
		<lastBuildDate>Fri, 14 Nov 2014 02:10:39 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Извлечение подстроки]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=430972#p430972</link>
			<description><![CDATA[<div class="quotebox"><cite>xxblx пишет:</cite><blockquote><p>Можно было просто grep&#039;ом или sed&#039;ом брать только 1-ую строку.</p></blockquote></div><p><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">$ head -n1</div><br /></p><div class="quotebox"><cite>xxblx пишет:</cite><blockquote><p>А вот grep и sed - оптимально, извлекают верный каталог вне зависимости от того насколько глубоко после корня он находится.</p></blockquote></div><p>мой вариант с sed лучше:</p><p>1. выводит любой вариант, т.е. может удалять/добавлять что-то к выводу. Например слеш в начале.<br />2. в принципе быстрее, т.к. прерывается как только найдёт.&nbsp; (в данном случае sed прервётся, но tar всё равно будет читать до победного. Хотя его тоже можно и остановить маской файла, и вывести посл. строку командой tail -n1).</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Fri, 14 Nov 2014 02:10:39 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=430972#p430972</guid>
		</item>
		<item>
			<title><![CDATA[Re: Извлечение подстроки]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=430924#p430924</link>
			<description><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>дык в первой строке вывода tar это и написано.</p></blockquote></div><div class="quotebox"><cite>beliy пишет:</cite><blockquote><p>таки да чем не вариант оттуда брать?</p></blockquote></div><p>Да, что-то я сглупил. Можно было просто grep&#039;ом или sed&#039;ом брать только 1-ую строку. </p><div class="quotebox"><cite>beliy пишет:</cite><blockquote><p>Вариант через cut:</p></blockquote></div><p>Этот вариант хорош, если /mnt/mag <br />Т.е. 2 каталога после корня. <br />А если будет /mnt/chroots/mageia/и_тут_уже_система, то вариант с cut извлечет все равно только первые два каталога после корня, т.е. /mnt/chroots, а значит путь будет получен неверный. </p><p>Но все равно спасибо, я на самом деле думал и сам на счет cut, но пришел к выводу, что такой вариант не универсален. <br />А вот grep и sed - оптимально, извлекают верный каталог вне зависимости от того насколько глубоко после корня он находится.</p>]]></description>
			<author><![CDATA[null@example.com (xxblx)]]></author>
			<pubDate>Thu, 13 Nov 2014 14:54:04 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=430924#p430924</guid>
		</item>
		<item>
			<title><![CDATA[Re: Извлечение подстроки]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=430921#p430921</link>
			<description><![CDATA[<p>А вот так как раз и можно узнать по первой строке в архиве:</p><p><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">tar -tf &#039;our_archive.tar.gz&#039; | sed -n &#039;1p&#039;&nbsp; </div></p>]]></description>
			<author><![CDATA[null@example.com (beliy)]]></author>
			<pubDate>Thu, 13 Nov 2014 14:33:10 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=430921#p430921</guid>
		</item>
		<item>
			<title><![CDATA[Re: Извлечение подстроки]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=430920#p430920</link>
			<description><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>xxblx пишет:</p><p>&nbsp; &nbsp; в выводе выше это /mnt/mag</p><p>дык в первой строке вывода tar это и написано.</p></blockquote></div><p>таки да чем не вариант оттуда брать?</p><p>Вариант через <strong>cut</strong>:</p><p><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;mnt/mag/usr/share/&quot; | cut -f1,2 -d/</div></p>]]></description>
			<author><![CDATA[null@example.com (beliy)]]></author>
			<pubDate>Thu, 13 Nov 2014 14:19:02 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=430920#p430920</guid>
		</item>
		<item>
			<title><![CDATA[Re: Извлечение подстроки]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=430880#p430880</link>
			<description><![CDATA[<div class="quotebox"><cite>xxblx пишет:</cite><blockquote><p>в выводе выше это /mnt/mag</p></blockquote></div><p>дык в первой строке вывода tar это и написано.</p><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">$ echo &quot;mnt/mag/<br />mnt/mag/usr/<br />mnt/mag/usr/share/&quot; | sed -rn &#039;s~(.*)/usr/~/\1~;T;p;q&#039;<br />/mnt/mag<br /></div></p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Thu, 13 Nov 2014 08:15:54 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=430880#p430880</guid>
		</item>
		<item>
			<title><![CDATA[Re: Извлечение подстроки]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=430840#p430840</link>
			<description><![CDATA[<p>Стоило только создать топик (а ведь и справку читал, и гуглил перед созданием), как тут же нагуглил похожий вопрос <img src="https://linuxforum.ru/img/smilies/ag.gif" alt="ag" /> Ну и под свою задачу подправил<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">[xxblx@localhost mageia-chroot]$ tar -tf Mageia4_i586.tar.gz | grep -m 1 -o -P &quot;.*(?=/usr/share/)&quot;<br />mnt/mag</div></p><p>Но я все равно буду рад и другим вариантам, может без -P удастся обойтись. Оно мне не мешает никак, но мало ли.</p>]]></description>
			<author><![CDATA[null@example.com (xxblx)]]></author>
			<pubDate>Wed, 12 Nov 2014 16:41:14 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=430840#p430840</guid>
		</item>
		<item>
			<title><![CDATA[Извлечение подстроки]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=430835#p430835</link>
			<description><![CDATA[<p>Доброго времени суток. </p><p>Необходимо извлечь подстроку. </p><p>Есть тарболл (*.tar.gz), в нем &quot;бекап&quot; системы установленной в chroot. Система была установлена (условно) в /mnt/mag. <br />В архиве, соответственно файлы с путями начиная от корня, но без слеша, т.к. архив рассчитан на последующее извлечение в / </p><p>Как это выглядит:<br /></p><div class="codebox"><pre><code>[xxblx@localhost mageia-chroot]$ tar -tf Mageia4_i586.tar.gz | grep -m 15 -E &quot;.*&quot; 
mnt/mag/
mnt/mag/dev/
mnt/mag/dev/nst29m
mnt/mag/dev/ttyS6
mnt/mag/dev/tty2
mnt/mag/dev/ipmo
mnt/mag/dev/port
mnt/mag/dev/ttyI8
mnt/mag/dev/sddh14
mnt/mag/dev/pppox44
mnt/mag/dev/ptyc3
mnt/mag/dev/ttyye
mnt/mag/dev/ttySR261
mnt/mag/dev/mga_vid
mnt/mag/dev/nvidia142</code></pre></div><p>Весь печатать смысла нет сюда, первых 15 строк, думаю, достаточно чтобы все поняли о каком содержимом архива речь. </p><p>Задача получить из содержимого архива путь, куда была установлена система, какой каталог использовался для chroot, в выводе выше это /mnt/mag, но мог быть и другой, хоть /mnt/chroot, хоть /mnt/dir/dir/dir/dir/chroot. В общем-то, кто знает =) </p><p>Я привык, что в python&#039;е используя регулярки, я могу указать скобками какую часть найденного мне надо сохранить и знаком ? могу из жадных делать ленивые квантификаторы. <br />С grep&#039;ом что-то не прокатывает. Справку прочитал, ответ не нашел. Пробовал как -E, так и другие типы регулярок. <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">[xxblx@localhost mageia-chroot]$ tar -tf Mageia4_i586.tar.gz | grep -m 1 -o -E &quot;^(.+?)/usr&quot;<br />mnt/mag/usr</div><br />А надо чтобы в выводе было mnt/mag/ или mnt/mag </p><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">[xxblx@localhost mageia-chroot]$ tar -tf Mageia4_i586.tar.gz | grep -m 1 -o -E &quot;^(.+?)/usr&quot; | grep -o -E &quot;^.+/&quot;<br />mnt/mag/</div><br />Но это выглядит откровенно стремно. </p><p>Можно это как-нибудь более изящно сделать?</p>]]></description>
			<author><![CDATA[null@example.com (xxblx)]]></author>
			<pubDate>Wed, 12 Nov 2014 16:19:15 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=430835#p430835</guid>
		</item>
	</channel>
</rss>
