<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: Grep и кавычки в регулярном выражении [win].]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15161&amp;type=atom" />
	<updated>2020-02-05T09:20:28Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=15161</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Grep и кавычки в регулярном выражении [win].]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137656#p137656" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>DnsIs пишет:</cite><blockquote><div class="codebox"><pre><code>egrep -o &quot;http://[^\&quot;]+&quot; text.txt</code></pre></div><p>Но вот загвоздка: в регулярном выражении используется кавычка, она хоть и экранирована</p></blockquote></div><p>Не вижу ни одной экранированной с точки зрения cmd.exe кавычки.</p><p>Если открывающую кавычку не экранировать, то идущие за ней спецсимволы в экранировании не нуждаются, а если не экранировать — нуждаются:<br /></p><div class="codebox"><pre><code>echo &quot;&amp;&quot;^&amp;^&quot;
echo ^&quot;^&amp;&quot;&amp;&quot;</code></pre></div><p> — оба выведут «&quot;&amp;&quot;&amp;&quot;».</p><p>Перенаправления после команды должны работать:<br /></p><div class="codebox"><pre><code>egrep -o &quot;http://[^\&quot;]+^&quot; text.txt &gt;output.txt
egrep -o ^&quot;http://[^^\&quot;]+&quot; text.txt &gt;output.txt
egrep -o ^&quot;http://[^^\^&quot;]+^&quot; text.txt &gt;output.txt</code></pre></div><p>Автодополнение по TAB не получается, вероятно, из-за нечётного числа кавычек. Для этого можно ввести лишнюю кавычку и пробел, затем их удалить.</p>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2020-02-05T09:20:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137656#p137656</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Grep и кавычки в регулярном выражении [win].]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137639#p137639" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Попробуйте заменить кавычки их 16-ричным ASCII кодом (x22) и используйте опцию -P</p></blockquote></div><p>Точно. Эврика! Мой grep был без perl-повых регсэпов и я забыл про него, заменил на другой и вуаля.<br />Дополню лишь: </p><div class="codebox"><pre><code>&quot;https?://[^\x22]+&quot;</code></pre></div><p>УРА.</p>]]></content>
			<author>
				<name><![CDATA[DnsIs]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26282</uri>
			</author>
			<updated>2020-02-04T09:09:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137639#p137639</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Grep и кавычки в регулярном выражении [win].]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137638#p137638" />
			<content type="html"><![CDATA[<p>Попробуйте заменить кавычки их 16-ричным ASCII кодом (x22) и используйте опцию -P</p><p>исходный пример из первого сообщения<br /></p><div class="codebox"><pre><code>
egrep -o &quot;http://[^\&quot;]+&quot; text.txt
</code></pre></div><p>измененный пример<br /></p><div class="codebox"><pre><code>
grep -P -o &quot;http://[^\x22]+&quot; text.txt
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2020-02-04T08:31:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137638#p137638</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Grep и кавычки в регулярном выражении [win].]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137637#p137637" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Подразумеваю виндовую команду echo. С юниксовой командой всё должно работать хорошо. По крайней мере в юниксовом терминале.</p></blockquote></div><p>Проверил по всякому, в винде не работает. Сорри. Без кавычки все в порядке, но как только встречается кавычка, все ломается.</p><div class="quotebox"><cite>JSman пишет:</cite><blockquote><p>...Просто запускаем с параметром -f, указываем файл с регулярным выражением.</p></blockquote></div><p>Да, я писал про <a href="http://forum.script-coding.com/viewtopic.php?pid=137632#p137632">такой способ</a> выше. Но я хотел все уместить в одно командную строку, поэтому у меня получилось это сделать лишь с помощью шестнадцатеричных кодов символов.</p><div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Никак.</p></blockquote></div><p>Собственно я помнил про эту конструкцию, она уже была на этом форуме (хрен ее знает, как оно работает вообще), но опять же, это только в батнике.</p><br /><p>В итоге получается, что для командной строки windows трудно найти простое решение, для поиска кавычек в тексте (не простого поиска, а поиска регуляркой), с последующим выводом в файл. Спасет только батник.</p><p>Вероятно что-то можно придумать на perl, но к сожалению я его не знаю. Мне ближе lua, который вероятно будет даже быстрее.</p><p>Всем спасибо.</p>]]></content>
			<author>
				<name><![CDATA[DnsIs]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26282</uri>
			</author>
			<updated>2020-02-04T04:58:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137637#p137637</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Grep и кавычки в регулярном выражении [win].]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137635#p137635" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>DnsIs пишет:</cite><blockquote><p>Как запихать в файл строку http://[\&quot;]+ с помощью win-echo я ума не приложу. Проблема в том, что на конце появляются символы окончания строки и перевода каретки, а они все портят.</p></blockquote></div><p>Никак. &quot;Запихивайте&quot; строку в файл посредством:<br /></p><div class="codebox"><pre><code>@echo off
setlocal enableextensions enabledelayedexpansion

&lt;nul &gt;&quot;Out.txt&quot; set /p sVar=http://[\&quot;]

endlocal
exit /b 0
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2020-02-03T14:55:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137635#p137635</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Grep и кавычки в регулярном выражении [win].]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137634#p137634" />
			<content type="html"><![CDATA[<p>В общем, не поленился и скачал egrep. Просто запускаем с параметром -f, указываем файл с регулярным выражением.</p><p>Содержание reg.txt:<br /></p><div class="codebox"><pre><code>
&quot;http://[^&quot;]+&quot;
</code></pre></div><div class="codebox"><pre><code>
egrep -f reg.txt text.txt &gt; res.txt
PAUSE
</code></pre></div><p>Все пишется в res.txt.</p><p>Добавил утилиты с библиотеками, чтобы не пришлось искать по Интернету.</p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2020-02-03T14:23:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137634#p137634</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Grep и кавычки в регулярном выражении [win].]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137633#p137633" />
			<content type="html"><![CDATA[<p><strong>DnsIs</strong></p><p>Экстраполируя Ваш ответ, подозреваю, что это решение тоже не проходит</p><div class="codebox"><pre><code>
echo REGEXP | grep -f - FILENAME
</code></pre></div><p>Подразумеваю виндовую команду <strong>echo</strong>. С юниксовой командой всё должно работать хорошо. По крайней мере в юниксовом терминале.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2020-02-03T11:45:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137633#p137633</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Grep и кавычки в регулярном выражении [win].]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137632#p137632" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>JSman пишет:</cite><blockquote><p>^ - это символ экранирования</p></blockquote></div><p>Так тоже не получается (в итоге я все сделал на lua, получилось гораздо быстрее написать код и проще)<br />Но если не уходить за рамки этой темы, то пока только костыль:<br /></p><div class="codebox"><pre><code>echo -n -e &quot;\x68\x74\x74\x70\x3a\x2f\x2f\x5b\x5e\x22\x5d\x2b\x0a&quot; &gt; REG &amp;&amp; egrep -o -f REG text.txt</code></pre></div><p>Причем виндовая команда <strong>echo </strong>не подходит, нужно брать тоже из GNU утилит.<br />То есть регулярку пишем в отдельный файл, и потом уже пользуемся ей.</p><p>Как запихать в файл строку <strong>http://[\&quot;]+</strong> с помощью win-echo я ума не приложу. Проблема в том, что на конце появляются символы окончания строки и перевода каретки, а они все портят.</p>]]></content>
			<author>
				<name><![CDATA[DnsIs]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26282</uri>
			</author>
			<updated>2020-02-03T10:33:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137632#p137632</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Grep и кавычки в регулярном выражении [win].]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137631#p137631" />
			<content type="html"><![CDATA[<p><strong>DnsIs</strong><br /></p><div class="codebox"><pre><code>egrep -o &quot;http://[^^^&quot;]+&quot; text.txt</code></pre></div><p>^ - это символ экранирования</p>]]></content>
			<author>
				<name><![CDATA[JSmаn]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24434</uri>
			</author>
			<updated>2020-02-03T09:50:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137631#p137631</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Grep и кавычки в регулярном выражении [win].]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137630#p137630" />
			<content type="html"><![CDATA[<p>Пробовал. ) Не то пальто.</p>]]></content>
			<author>
				<name><![CDATA[DnsIs]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26282</uri>
			</author>
			<updated>2020-02-03T07:48:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137630#p137630</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Grep и кавычки в регулярном выражении [win].]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137628#p137628" />
			<content type="html"><![CDATA[<p>Подскажу, но очень неуверенно. Вместо</p><div class="codebox"><pre><code>\&quot;</code></pre></div><p>попробуйте</p><div class="codebox"><pre><code>&quot;&quot;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2020-02-03T07:38:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137628#p137628</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: Grep и кавычки в регулярном выражении [win].]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=137627#p137627" />
			<content type="html"><![CDATA[<p>Доброго дня.</p><p>Для поиска обрамленных кавычками ссылок в файле, мне кажется самый простой код такой (важно! все происходит в win):<br /></p><div class="codebox"><pre><code>egrep -o &quot;http://[^\&quot;]+&quot; text.txt</code></pre></div><p>Но вот загвоздка: в регулярном выражении используется кавычка, она хоть и экранирована, но все равно ломает мозг cmd.exe.<br />По-первых не работает авто-дополнение по TAB<br />Во-вторых не работает перенаправление вывода как &quot;&gt;&quot;, так и &quot;|&quot;</p><p>Задачи бывают разные и если сделать целью не изменение регулярки для избавления от кавычки, то какой есть выход из такой ситуации?</p>]]></content>
			<author>
				<name><![CDATA[DnsIs]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26282</uri>
			</author>
			<updated>2020-02-03T07:33:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=137627#p137627</id>
		</entry>
</feed>
