<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; парснг текстовых файлов из shell]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=36245&amp;type=atom" />
	<updated>2014-10-02T10:59:58Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=36245</id>
		<entry>
			<title type="html"><![CDATA[Re: парснг текстовых файлов из shell]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=424510#p424510" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>beliy пишет:</cite><blockquote><p>А какой смысл в строках:</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">$ echo &quot;$IFS&quot;|hexdump -C<br />00000000&nbsp; 20 09 0a 0a&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| ...|<br />00000004<br /></div><br />$IFS это список разделителей в bash&#039;е, которые нужны для того, что-бы разрезать строку $S в этом месте кода:<br /></p><div class="codebox"><pre><code>ARRAY=( $S )</code></pre></div><p>если вы знакомы с php, то эта строка эквивалентна <a href="http://php.net/manual/ru/function.explode.php">http://php.net/manual/ru/function.explode.php</a></p><p>Ну и да, разделители нужны и для другого, потому я их сохранил. Иначе ваш код будет очень неожиданно работать, если разделитель у вас будет &quot;|&quot;.</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2014-10-02T10:59:58Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=424510#p424510</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: парснг текстовых файлов из shell]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=424500#p424500" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>Вот мой вариант</p></blockquote></div><p>А какой смысл в строках:</p><div class="codebox"><pre><code>OLD_IFS=&quot;$IFS&quot;</code></pre></div><div class="codebox"><pre><code>IFS=&quot;$OLD_IFS&quot;</code></pre></div><p>?</p>]]></content>
			<author>
				<name><![CDATA[beliy]]></name>
				<uri>https://linuxforum.ru/profile.php?id=34742</uri>
			</author>
			<updated>2014-10-02T10:35:10Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=424500#p424500</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: парснг текстовых файлов из shell]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=424449#p424449" />
			<content type="html"><![CDATA[<p><strong>helgisbox</strong>, ещё <strong>info bash</strong> прочитайте, если не хотите быть школьником.</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2014-10-02T07:59:07Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=424449#p424449</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: парснг текстовых файлов из shell]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=424448#p424448" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>helgisbox пишет:</cite><blockquote><p>1) Каким образом выполнить парсинг из шелла текстового файла с разделителями?</p></blockquote></div><p>вариантов много. Вот мой вариант:<br /></p><div class="codebox"><pre><code>#!/bin/bash

FILE_NAME=&quot;t&quot;

OLD_IFS=&quot;$IFS&quot;
IFS=&quot;|&quot;

declare ARRAY

while read S
do
    echo &quot;$S&quot;
    ARRAY=( $S )
    for (( J=0; J&lt;${#ARRAY[@]}; J++ ))
    do
        echo &quot;$J - ${ARRAY[$J]}&quot;
    done
done &lt;&quot;$FILE_NAME&quot;

IFS=&quot;$OLD_IFS&quot;</code></pre></div><div class="quotebox"><cite>helgisbox пишет:</cite><blockquote><p>Какой командой можно получить мануал по такой команде? Пробовал &quot;man for&quot; - результат пустой, а в &quot;man sh&quot; по for описание короткое. Если есть мануал - прошу кинуть в меня им.</p></blockquote></div><p><strong>man bash</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">$ help for<br />for: for NAME [in WORDS ... ] ; do COMMANDS; done<br />&nbsp; &nbsp; Execute commands for each member in a list.<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; The `for&#039; loop executes a sequence of commands for each member in a<br />&nbsp; &nbsp; list of items.&nbsp; If `in WORDS ...;&#039; is not present, then `in &quot;$@&quot;&#039; is<br />&nbsp; &nbsp; assumed.&nbsp; For each element in WORDS, NAME is set to that element, and<br />&nbsp; &nbsp; the COMMANDS are executed.<br />&nbsp; &nbsp; <br />&nbsp; &nbsp; Exit Status:<br />&nbsp; &nbsp; Returns the status of the last command executed.<br /></div></p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2014-10-02T07:54:37Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=424448#p424448</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: парснг текстовых файлов из shell]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=424446#p424446" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>gabix пишет:</cite><blockquote><p>For — какбэ не команда, а оператор, поэтому man-страниц и нет. Ну а мануалка вот:<br /><a href="http://tldp.org/LDP/abs/html/loops.html">http://tldp.org/LDP/abs/html/loops.html</a></p></blockquote></div><p>логично ,что оператор. Почему-то виндозники по мену мануал отдельно вынесли. Ну да ладно. По той ссылке все подробно описано. Спасибо. Но разбора строки, которая берется из файла там нет. Возможно два в одном в cmd сделано для уменьшения числа команд и, как следствие, для упрщения самого командного интерпретатора. Стало быть задача сводится к другому: </p><p><strong>Какими командами можно пропарсить строку в shell-е</strong>? Может есть какой-нибудь strstr его можно было бы в цикле проанализировать.</p>]]></content>
			<author>
				<name><![CDATA[helgisbox]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11654</uri>
			</author>
			<updated>2014-10-02T07:41:24Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=424446#p424446</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: парснг текстовых файлов из shell]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=424444#p424444" />
			<content type="html"><![CDATA[<p>For — какбэ не команда, а оператор, поэтому man-страниц и нет. Ну а мануалка вот:<br /><a href="http://tldp.org/LDP/abs/html/loops.html">http://tldp.org/LDP/abs/html/loops.html</a></p>]]></content>
			<author>
				<name><![CDATA[gabix]]></name>
				<uri>https://linuxforum.ru/profile.php?id=3246</uri>
			</author>
			<updated>2014-10-02T07:27:53Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=424444#p424444</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[парснг текстовых файлов из shell]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=424442#p424442" />
			<content type="html"><![CDATA[<p>В винде часто использую следующую конструкцию:<br />1) имею файл со списком хостов и параметров, например счетчиками производительности. которые надо время от времени запускать, число счетчиков разное ,но не больше 7, например.<br />&lt;hostname1&gt;|&lt;counter name1&gt;|&lt;counter name2&gt;|&lt;counter name3&gt;<br />&lt;hostname2&gt;|&lt;counter name1&gt;|&lt;counter name2&gt;<br />&lt;hostname3&gt;|&lt;counter name1&gt;|&lt;counter name2&gt;</p><p>В скрипте пишу следующую конструкцию:</p><p>for /f &quot;delims=|;tokens=1,2,3,4,5,6,7&quot; do (<br />выполняю действия с переменными %%i (первое вхождение) %%j (второе) и&nbsp; т д.<br />)</p><p>При <br />том мануал по даной комманде в винде можно получить простой комбинацией: &quot;help for&quot; в cmd.exe</p><p><strong>Вопросы</strong>:<br />1) Каким образом выполнить <strong>парсинг</strong> из шелла <strong>текстового файла с разделителями</strong>?<br />2) <em>Какой командой можно получить мануал по такой команде</em>? Пробовал &quot;man for&quot; - результат пустой, а в &quot;man sh&quot; по for описание короткое. Если есть мануал - прошу кинуть в меня им.</p>]]></content>
			<author>
				<name><![CDATA[helgisbox]]></name>
				<uri>https://linuxforum.ru/profile.php?id=11654</uri>
			</author>
			<updated>2014-10-02T07:20:54Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=424442#p424442</id>
		</entry>
</feed>
