<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Mikrotik.moscow [тема: Разделение/анализ переменных данных]</title>
		<link>http://mikrotik.moscow</link>
		<description>Новое в теме Разделение/анализ переменных данных форума RouterOS на сайте Mikrotik.moscow [mikrotik.moscow]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 01 Aug 2026 03:08:35 -0400</pubDate>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403315">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Привет всем, мне тоже нужен скрипт для парсинга данных из комментариев в секрете. Например: Комментарий секрет A: 081234567890|Западная Ява|Джон Дью Комментарий секрет B: 08123456789|Восточная Ява|Майкл Джексон Комментарий секрет C: 0812345678901|Центральная Ява|Клара Бернадетт И использовать “|” в качестве разделителя. Как мне извлечь данные о телефоне, адресе и имени, если данные случайные, как в приведенных примерах? Спасибо. <br />
			<i>08.11.2023 00:38:00, Raffa2023.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403315</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403315</guid>
			<pubDate>Wed, 08 Nov 2023 00:38:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403314">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Данные, используемые, предназначены только для учебных целей. <br />
			<i>17.11.2023 22:08:00, diamuxin.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403314</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403314</guid>
			<pubDate>Fri, 17 Nov 2023 22:08:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403313">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Помните, что это рецепт для "инъекционных атак", похожих на хорошо известные "SQL-инъекционные атаки", которые так часто используются для взлома веб-сайтов, интернет-магазинов и прочего, а также как использование eval() для быстрого парсинга JSON-данных в JavaScript. Это можно использовать только в том случае, если данные, которые нужно распарсить, полностью надежны, а не в тех случаях, когда есть хоть малейшая возможность того, что посторонний сможет изменить данные, например, через форму или другой способ ввода данных. <br />
			<i>17.11.2023 20:33:00, pe1chl.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403313</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403313</guid>
			<pubDate>Fri, 17 Nov 2023 20:33:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403312">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Что-то вроде этого, да? {<br />:local string "081234567890|Западная Ява|Джон Дью|Еще один|Второй элемент"<br />:local reEncoded<br /><br />:for i from=0 to=([:len $string] - 1) do={ <br /> &nbsp; &nbsp;:local char [:pick $string $i]<br /> &nbsp; &nbsp;:if ($char = "|") do={:set $char ","}<br /> &nbsp; &nbsp;:set reEncoded ($reEncoded . $char) <br />}<br /><br />:local test [:toarray $reEncoded]<br />:put ($test-&gt;0) <br />:put ($test-&gt;1)<br />:put ($test-&gt;2)<br />:put ($test-&gt;3)<br />:put ($test-&gt;4)<br />}<br /><br />Вывод:<br />081234567890<br />Западная Ява<br />Джон Дью<br />Еще один<br />Второй элемент. Я адаптировал эту функцию, которую нашел на форуме по скриптам, и она подходит для моих нужд, поэтому делюсь ей. :global strEncode do={<br /> &nbsp; &nbsp;:local string $1<br /> &nbsp; &nbsp;:local reEncoded<br /> &nbsp; &nbsp;:local char<br /> &nbsp; &nbsp;:if (([:typeof $string] != "str") or ($string = "")) do={ <br /> &nbsp; &nbsp; &nbsp; &nbsp;:return "" <br /> &nbsp; &nbsp;} else={<br /> &nbsp; &nbsp; &nbsp; &nbsp;:for i from=0 to=([:len $string] -1) do={ <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;:set char [:pick $string $i]<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;:if ($char = "|") do={:set $char ","}<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;:if ($char = "!") do={:set $char ","}<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;:set reEncoded ($reEncoded . $char) <br /> &nbsp; &nbsp; &nbsp; &nbsp;}<br /> &nbsp; &nbsp; &nbsp; &nbsp;:return $reEncoded<br /> &nbsp; &nbsp;}<br />}<br /><br />Используйте:<br />:put [$strEncode "081234567890|Западная Ява|Джон Дью|Еще один!Второй элемент"]<br />Вывод:<br />081234567890,Западная Ява,Джон Дью,Еще один,Второй элемент. <br />
			<i>17.11.2023 17:54:00, diamuxin.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403312</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403312</guid>
			<pubDate>Fri, 17 Nov 2023 17:54:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403311">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Спасибо всем за ваши советы. С уважением. <br />
			<i>17.11.2023 17:28:00, diamuxin.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403311</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403311</guid>
			<pubDate>Fri, 17 Nov 2023 17:28:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403310">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Не просто замени запятую “,” на (например) $$$comma$$$, а когда массив будет создан, верни назад $$$comma$$$ на “,” для каждого элемента. <br />
			<i>17.11.2023 16:30:00, rextended.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403310</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403310</guid>
			<pubDate>Fri, 17 Nov 2023 16:30:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403309">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Я подал запрос на добавление функции в v7.13beta для :serialize и :deserialize, чтобы добавить поддержку "разделенных файлов" (CSV/TSV и т.д.). Хотя новые команды добавляют JSON в бета-версии, они поддерживают from= и to=... Но я согласен, команда :regexp (с захватом/группировкой), которая была бы похожа на sed, была бы полезной и решила бы проблему парсинга строк более универсально. <br />
			<i>17.11.2023 15:05:00, Amm0.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403309</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403309</guid>
			<pubDate>Fri, 17 Nov 2023 15:05:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403308">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Обычно причиной использования разделителя является то, что известно, что этот разделитель не может встречаться в данных. Я часто использую , но в данном случае, судя по всему, был выбран |. Я не хотел бы заменять все | на , а затем использовать :toarray, потому что вполне возможно, что некоторые поля между | могут содержать , в значении, и это приведет к хаосу. Нам действительно нужны функции скриптов, которые могут преобразовать строку в массив, используя пользовательский разделитель или, лучше, регулярные выражения с захватом. В свое время нам обещали библиотеку скриптов с такими полезными функциями… <br />
			<i>17.11.2023 14:48:00, pe1chl.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403308</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403308</guid>
			<pubDate>Fri, 17 Nov 2023 14:48:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403307">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Я могу (бесполезно) написать метод, чтобы не использовать pick для разделения строки, но если pick существует, почему бы его не использовать? Чтобы преобразовать x|y|z в массив из 3 элементов, два способа проще: сначала заменить все | внутри строки на запятую, и использовать :toarray или использовать "while", пока не обработаешь строку от начала до конца и не создашь новую строку в массиве для каждого | и последнюю в конце строки. <br />
			<i>17.11.2023 14:44:00, rextended.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403307</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403307</guid>
			<pubDate>Fri, 17 Nov 2023 14:44:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403306">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Использование :toarray "трюка" для разбора делимитированной строки не учитывает | как разделитель. Под "циклом" подразумевается цикл :for с :pick и :find внутри... поскольку :toarray на самом деле не является парсером, он просто удобно использует запятую в синтаксисе для определения элементов. <br />
			<i>17.11.2023 14:20:00, Amm0.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403306</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403306</guid>
			<pubDate>Fri, 17 Nov 2023 14:20:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403305">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Как сделать это без pick? Я пробовал использовать массив, но только "запятая" работает в качестве разделителя между значениями. Вертикальная черта не работает. {<br />:local test [:toarray "081234567890|West Java|John Due|Another one|Second item"]<br />:put ($test-&gt;0) <br />:put ($test-&gt;1)<br />:put ($test-&gt;2)<br />:put ($test-&gt;3)<br />:put ($test-&gt;4)<br />} простите мою неосведомленность. С уважением. <br />
			<i>17.11.2023 13:30:00, diamuxin.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403305</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403305</guid>
			<pubDate>Fri, 17 Nov 2023 13:30:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403304">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Это всего лишь пример для немного сложной строки, если полей больше, то цикл будет лучше... <br />
			<i>08.11.2023 23:54:00, rextended.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403304</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403304</guid>
			<pubDate>Wed, 08 Nov 2023 23:54:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403303">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Немного сложно, но с твоим отличным объяснением я понимаю. Спасибо, магистр! <br />
			<i>08.11.2023 23:51:00, diamuxin.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403303</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403303</guid>
			<pubDate>Wed, 08 Nov 2023 23:51:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403302">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Пробелы не были расставлены случайно… Если [:find $test “|” -1] определяет позицию первого “|” ([:find $test “|” -1] + 1) это следующий символ после |, так что если вы начнете следующий :find с ([:find $test “|” -1] + 1), вы получите следующий “|” и так далее… { :local test “081234567890|West Java|John Due” :put [:pick $test (-1 + 1) [:find $test “|” -1] ] :put [:pick $test ([:find $test “|” -1] + 1) [:find $test “|” [:find $test “|” -1]] ] :put [:pick $test ([:find $test “|” [:find $test “|” -1]] + 1) [:len $test ] ] } так что, если вы добавите еще один элемент: { :local test "081234567890|West Java|John Due|another one" :local s "|" ; # разделитель :put [:pick $test ( -1 + 1) [:find $test $s -1] ] :put [:pick $test ([:find $test $s -1] + 1) [:find $test $s [:find $test $s -1]] ] :put [:pick $test ([:find $test $s [:find $test $s -1]] + 1) [:find $test $s [:find $test $s [:find $test $s -1]]] ] :put [:pick $test ([:find $test $s [:find $test $s [:find $test $s -1]]] + 1) [:len $test ] ] } <br />
			<i>08.11.2023 23:35:00, rextended.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403302</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403302</guid>
			<pubDate>Wed, 08 Nov 2023 23:35:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403301">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Привет, Рекс. Можешь объяснить эту часть скрипта? (Я вижу, что она нужна для получения второго символа “|”, но я не понимаю, как это работает. [:find $test "|" [:find $test "|" -1]] Спасибо. <br />
			<i>08.11.2023 23:00:00, diamuxin.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403301</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403301</guid>
			<pubDate>Wed, 08 Nov 2023 23:00:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403300">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			{ :local test “081234567890|Западная Ява|Джон Дью” :put [:pick $test (                                   -1    + 1)                  [:find $test “|” -1]  ] :put [:pick $test (                  [:find $test “|” -1]   + 1) [:find $test “|” [:find $test “|” -1]] ] :put [:pick $test ( [:find $test “|” [:find $test “|” -1]]  + 1)                  [:len  $test       ]  ] } <br />
			<i>08.11.2023 14:12:00, rextended.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403300</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403300</guid>
			<pubDate>Wed, 08 Nov 2023 14:12:00 -0500</pubDate>
			<category>RouterOS</category>
		</item>
		<item>
			<title>Разделение/анализ переменных данных</title>
			<description><![CDATA[<b><a href="http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403299">Разделение/анализ переменных данных</a></b> <i>RouterOS</i> в форуме <a href="http://mikrotik.moscow/forum/forum57/">RouterOS</a>. <br />
			Какой командой можно заменить bash awk или cut? Я нашел функцию “:parse”, но не смог с ней справиться. Когда я выполняю следующую команду: :put [/system resource get version], я вижу что-то вроде: 6.44.5 (долгосрочная). Я хочу получить только номер версии. То есть, использовать пробел в качестве разделителя. Спасибо! <br />
			<i>20.08.2019 16:43:00, upnort.</i>]]></description>
			<link>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403299</link>
			<guid>http://mikrotik.moscow/forum/forum57/86115-razdelenie_analiz-peremennykh-dannykh/message403299</guid>
			<pubDate>Tue, 20 Aug 2019 16:43:00 -0400</pubDate>
			<category>RouterOS</category>
		</item>
	</channel>
</rss>
