<?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; Помогите написать скрипт на Bash. Подмена значений .]]></title>
		<link>https://linuxforum.ru/viewtopic.php?id=36292</link>
		<atom:link href="https://linuxforum.ru/extern.php?action=feed&amp;tid=36292&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Помогите написать скрипт на Bash. Подмена значений .».]]></description>
		<lastBuildDate>Fri, 10 Oct 2014 10:18:19 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425717#p425717</link>
			<description><![CDATA[<div class="quotebox"><cite>chelovekot пишет:</cite><blockquote><p>мегагуру bash-scripting&#039;a drBatty.</p></blockquote></div><p>тут лучше sed.</p><div class="quotebox"><cite>i2ks пишет:</cite><blockquote><p>for i in `cat list`</p></blockquote></div><p>ну нахрена&nbsp; жеж?!<br /></p><div class="codebox"><pre><code>while  read line; do …; done &lt;list</code></pre></div><div class="quotebox"><cite>i2ks пишет:</cite><blockquote><p>ед-е условие HOLE и WELL_BASH , должны встречаться один раз в файле.</p></blockquote></div><p>в&nbsp; моём&nbsp; решении выше может&nbsp; сколько&nbsp; угодно раз, меняется первое HOLE на последнее WELL.<br /></p><div class="quotebox"><cite>tmp13 пишет:</cite><blockquote><p>tac rep.txt</p></blockquote></div><p>тоже интересный вариант.<br /></p><div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>sed -nre &#039;H;/WELL_BASH/{x;s!(HOLE\s*=\s*)([^\n]+)(\s*/\*[^\n]*\n.*\nWELL_BASH\s*=\s*)([^\n]+)(\s*/\*[^\n]*\n)!\1\4\3\4\5!;p}&#039; &lt;file&gt;</p></blockquote></div><p>хм. Опередили.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Fri, 10 Oct 2014 10:18:19 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425717#p425717</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425715#p425715</link>
			<description><![CDATA[<p><strong>borisgorbunov</strong>, <br />как-то так:<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">$ sed -rn &#039;H;${x;s~(HOLE =)([^/]*)(.*)(WELL_BASH =)([^/]*)~\1\5\3\4\5~;s/\n//;p}&#039; f<br />HOLE = 249KZK /*<br />PROJECT = Yark_wdb_int@pnsmos5 /*<br />DEPTH_BOTTOM = - /* Downhole depth (METRES) DOUBLE<br />DRILLED_DEPTH = - /* Total Depth - Driller (METRES) DOUBLE<br />ELEV_MEAS_REF = 181.43 /* Elevation of Measurement Reference (METRES) DOUBLE<br />FIELD = Jarkeevsky /* Field<br />LOCATION = Kjizjil-Kjychevskaja /* Location<br />LOGGED_DEPTH = - /* Total Depth - Logger (METRES) DOUBLE<br />SYMBOL = CIRCLE /* Symbol<br />TVD_BOTTOM = - /* True Vertical Depth at well bottom (METRES) DOUBLE<br />TYPE = SPM /*<br />WELL_BASH = 249KZK /* Primary Well Identifier<br /></div><br />это в предположении, что WELL_BASH всегда идёт&nbsp; ПОСЛЕ HOLE.<br />Если ДО, то проще.</p>]]></description>
			<author><![CDATA[null@example.com (drBatty)]]></author>
			<pubDate>Fri, 10 Oct 2014 10:12:57 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425715#p425715</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425347#p425347</link>
			<description><![CDATA[<p>Да обосраться можно, все такие умные.</p>]]></description>
			<author><![CDATA[null@example.com (i2ks)]]></author>
			<pubDate>Tue, 07 Oct 2014 15:10:00 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425347#p425347</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425344#p425344</link>
			<description><![CDATA[<div class="quotebox"><cite>Fat-Zer пишет:</cite><blockquote><p>как же иногда хочется ходить по улицам и убивать людей, которые в одной строке мешают sed, grep и awk... ...</p></blockquote></div><p>Ну ты тут не одинок...</p>]]></description>
			<author><![CDATA[null@example.com (stranger)]]></author>
			<pubDate>Tue, 07 Oct 2014 14:27:55 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425344#p425344</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425340#p425340</link>
			<description><![CDATA[<div class="quotebox"><cite>borisgorbunov пишет:</cite><blockquote><p>for i in `ls -1`;do  b=`grep WELL_BASH $i|awk &#039;{print $3}&#039;`; a=`grep HOLE $i|awk &#039;{print $3}&#039;`;sed -ri &#039;s/&#039;$a&#039;/&#039;$b&#039;/g&#039; $i;done</p></blockquote></div><div class="quotebox"><cite>i2ks пишет:</cite><blockquote><p>a=`grep HOLE file|awk &#039;{print $3}&#039;`<br />b=`grep WELL_BASH file|awk &#039;{print $3}&#039;`<br />sed -ri &#039;s/&#039;$a&#039;/&#039;$b&#039;/g&#039; file</p></blockquote></div><div class="quotebox"><cite>i2ks пишет:</cite><blockquote><p>for i in `ls -1`;do&nbsp; b=`grep WELL_BASH $i|awk &#039;{print $3}&#039;`; a=`grep HOLE $i|awk &#039;{print $3}&#039;`;sed &#039;s/&#039;$a&#039;/&#039;$b&#039;/g&#039; $i;done</p></blockquote></div><p>как же иногда хочется ходить по улицам и убивать людей, которые в одной строке мешают sed, grep и awk... хорошо хоть тут tr и cut не понадобились... =)</p><p>наиболее разумное решение, ИМХО:<br /></p><div class="codebox"><pre><code>find -type f | while read f; do 
  well_bash=$(sed -rne &#039;s!^WELL_BASH\s=\s(.+)\s/\*.*$!\1!p&#039; $f)
  sed -re &#039;s!^(HOLE\s=\s).+(\s/\*.*)$!\1&#039;&quot;$well_bash&quot;&#039;\2!&#039;  -i  $f
done</code></pre></div><p>ради спортивного интереса, одним sed скриптом:<br /></p><div class="codebox"><pre><code>sed -nre &#039;H;/WELL_BASH/{x;s!(HOLE\s*=\s*)([^\n]+)(\s*/\*[^\n]*\n.*\nWELL_BASH\s*=\s*)([^\n]+)(\s*/\*[^\n]*\n)!\1\4\3\4\5!;p}&#039; &lt;file&gt;</code></pre></div><p>само собой, у каждого способа есть свои недостатки...</p>]]></description>
			<author><![CDATA[null@example.com (Fat-Zer)]]></author>
			<pubDate>Tue, 07 Oct 2014 14:21:29 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425340#p425340</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425312#p425312</link>
			<description><![CDATA[<div class="quotebox"><cite>borisgorbunov пишет:</cite><blockquote><p>Вот так ???</p></blockquote></div><p>да, может на 10ке файлов это проверить. :-)</p>]]></description>
			<author><![CDATA[null@example.com (i2ks)]]></author>
			<pubDate>Tue, 07 Oct 2014 12:51:55 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425312#p425312</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425308#p425308</link>
			<description><![CDATA[<div class="quotebox"><cite>i2ks пишет:</cite><blockquote><p>сделал два файла<br /></p><div class="codebox"><pre><code>for i in `ls -1`;do  b=`grep WELL_BASH $i|awk &#039;{print $3}&#039;`; a=`grep HOLE $i|awk &#039;{print $3}&#039;`;sed &#039;s/&#039;$a&#039;/&#039;$b&#039;/g&#039; $i;done</code></pre></div><br /><p>только у меня просто вывод, а надо еще добавить будет ключик -ri после слова sed</p></blockquote></div><br /><br /><p>for i in `ls -1`;do&nbsp; b=`grep WELL_BASH $i|awk &#039;{print $3}&#039;`; a=`grep HOLE $i|awk &#039;{print $3}&#039;`;sed -ri &#039;s/&#039;$a&#039;/&#039;$b&#039;/g&#039; $i;done</p><p>Вот так ???</p>]]></description>
			<author><![CDATA[null@example.com (borisgorbunov)]]></author>
			<pubDate>Tue, 07 Oct 2014 12:18:47 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425308#p425308</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425306#p425306</link>
			<description><![CDATA[<p>Огромное спасибо всем. Беру сие творения на заметку. <img src="https://linuxforum.ru/img/smilies/bs.gif" alt="bs" /></p>]]></description>
			<author><![CDATA[null@example.com (borisgorbunov)]]></author>
			<pubDate>Tue, 07 Oct 2014 12:13:03 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425306#p425306</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425298#p425298</link>
			<description><![CDATA[<p>Да без sed какай то <span style="color: red"><strong>[CENSORED]</strong></span> типа:<br /></p><div class="codebox"><pre><code>for file in *.txt; do tac $file|awk -F[=\ ] &#039;{if(index($0,&quot;WELL_BASH&quot;)&gt;0){WB=$4};gsub(/HOLE = [a-Z]*_[0-9]*/,&quot;HOLE = &quot;WB); print $0}&#039;|tac &gt; new_$file; mv new_$file $file; done</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (tmp13)]]></author>
			<pubDate>Tue, 07 Oct 2014 11:46:08 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425298#p425298</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425289#p425289</link>
			<description><![CDATA[<div class="quotebox"><cite>beliy пишет:</cite><blockquote><p>А в чем сложность то? делайте это внутри цикла</p></blockquote></div><p>ни в чем)</p>]]></description>
			<author><![CDATA[null@example.com (i2ks)]]></author>
			<pubDate>Tue, 07 Oct 2014 11:23:12 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425289#p425289</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425287#p425287</link>
			<description><![CDATA[<p>сделал два файла<br /></p><div class="codebox"><pre><code>$ ls -l
total 8
-rw-rw-r-- 1 526 Oct  7 15:16 file1
-rw-rw-r-- 1 528 Oct  7 15:16 file2</code></pre></div><p>содержание файлов:<br /></p><div class="codebox"><pre><code>$ cat file1
HOLE = KZK_249 /*
PROJECT = Yark_wdb_int@pnsmos5 /*
DEPTH_BOTTOM = - /* Downhole depth (METRES) DOUBLE
DRILLED_DEPTH = - /* Total Depth - Driller (METRES) DOUBLE
ELEV_MEAS_REF = 181.43 /* Elevation of Measurement Reference (METRES) DOUBLE
FIELD = Jarkeevsky /* Field
LOCATION = Kjizjil-Kjychevskaja /* Location
LOGGED_DEPTH = - /* Total Depth - Logger (METRES) DOUBLE
SYMBOL = CIRCLE /* Symbol
TVD_BOTTOM = - /* True Vertical Depth at well bottom (METRES) DOUBLE
TYPE = SPM /*
WELL_BASH = 249KZK /* Primary Well Identifier

и

$ cat file2
HOLE = KZK_2409 /*
PROJECT = Yark_wdb_int@pnsmos5 /*
DEPTH_BOTTOM = - /* Downhole depth (METRES) DOUBLE
DRILLED_DEPTH = - /* Total Depth - Driller (METRES) DOUBLE
ELEV_MEAS_REF = 181.43 /* Elevation of Measurement Reference (METRES) DOUBLE
FIELD = Jarkeevsky /* Field
LOCATION = Kjizjil-Kjychevskaja /* Location
LOGGED_DEPTH = - /* Total Depth - Logger (METRES) DOUBLE
SYMBOL = CIRCLE /* Symbol
TVD_BOTTOM = - /* True Vertical Depth at well bottom (METRES) DOUBLE
TYPE = SPM /*
WELL_BASH = 249KZ0K /* Primary Well Identifier</code></pre></div><p>далее в цикле все:<br /></p><div class="codebox"><pre><code>for i in `ls -1`;do  b=`grep WELL_BASH $i|awk &#039;{print $3}&#039;`; a=`grep HOLE $i|awk &#039;{print $3}&#039;`;sed &#039;s/&#039;$a&#039;/&#039;$b&#039;/g&#039; $i;done</code></pre></div><p>результат:<br /></p><div class="codebox"><pre><code>HOLE = 249KZK /*
PROJECT = Yark_wdb_int@pnsmos5 /*
DEPTH_BOTTOM = - /* Downhole depth (METRES) DOUBLE
DRILLED_DEPTH = - /* Total Depth - Driller (METRES) DOUBLE
ELEV_MEAS_REF = 181.43 /* Elevation of Measurement Reference (METRES) DOUBLE
FIELD = Jarkeevsky /* Field
LOCATION = Kjizjil-Kjychevskaja /* Location
LOGGED_DEPTH = - /* Total Depth - Logger (METRES) DOUBLE
SYMBOL = CIRCLE /* Symbol
TVD_BOTTOM = - /* True Vertical Depth at well bottom (METRES) DOUBLE
TYPE = SPM /*
WELL_BASH = 249KZK /* Primary Well Identifier
HOLE = 249KZ0K /*
PROJECT = Yark_wdb_int@pnsmos5 /*
DEPTH_BOTTOM = - /* Downhole depth (METRES) DOUBLE
DRILLED_DEPTH = - /* Total Depth - Driller (METRES) DOUBLE
ELEV_MEAS_REF = 181.43 /* Elevation of Measurement Reference (METRES) DOUBLE
FIELD = Jarkeevsky /* Field
LOCATION = Kjizjil-Kjychevskaja /* Location
LOGGED_DEPTH = - /* Total Depth - Logger (METRES) DOUBLE
SYMBOL = CIRCLE /* Symbol
TVD_BOTTOM = - /* True Vertical Depth at well bottom (METRES) DOUBLE
TYPE = SPM /*
WELL_BASH = 249KZ0K /* Primary Well Identifier</code></pre></div><p>как видите все работате.</p><p>только у меня просто вывод, а надо еще добавить будет ключик -ri после слова sed</p>]]></description>
			<author><![CDATA[null@example.com (i2ks)]]></author>
			<pubDate>Tue, 07 Oct 2014 11:21:38 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425287#p425287</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425284#p425284</link>
			<description><![CDATA[<div class="quotebox"><cite>i2ks пишет:</cite><blockquote><p>Причем в каждом файле значения разные., значения a и b надо будет каждый роа обнулять на новые)</p><p>p.s. это я что то упустил.</p></blockquote></div><p>А в чем сложность то? делайте это внутри цикла <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /></p>]]></description>
			<author><![CDATA[null@example.com (beliy)]]></author>
			<pubDate>Tue, 07 Oct 2014 11:16:34 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425284#p425284</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425283#p425283</link>
			<description><![CDATA[<p>Я решил извращнуться на awk=)) как обычно=)<br /></p><div class="codebox"><pre><code>tac rep.txt |awk -F[=\ ] &#039;{if(index($0,&quot;WELL_BASH&quot;)&gt;0){WB=$4};gsub(/HOLE = [a-Z]*_[0-9]*/,&quot;HOLE = &quot;WB); print $0}&#039;|tac</code></pre></div><p>тут правда с учётом того что вид у HOLE всегда типа<br />HOLE = [a-Z]*_[0-9]* ну с этим можно поиграться...<br />Теперь вопрос как прореплейсить файлы если это необходимо=)</p>]]></description>
			<author><![CDATA[null@example.com (tmp13)]]></author>
			<pubDate>Tue, 07 Oct 2014 11:15:46 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425283#p425283</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425269#p425269</link>
			<description><![CDATA[<div class="quotebox"><cite>i2ks пишет:</cite><blockquote><p>Причем в каждом файле значения разные., значения <strong>a</strong> и<strong> b</strong> надо будет каждый роа обнулять на новые)</p><p>p.s. это я что то упустил.</p></blockquote></div><p>Ну да в этом и загвоздка.</p>]]></description>
			<author><![CDATA[null@example.com (borisgorbunov)]]></author>
			<pubDate>Tue, 07 Oct 2014 10:49:53 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425269#p425269</guid>
		</item>
		<item>
			<title><![CDATA[Re: Помогите написать скрипт на Bash. Подмена значений .]]></title>
			<link>https://linuxforum.ru/viewtopic.php?pid=425264#p425264</link>
			<description><![CDATA[<p>Причем в каждом файле значения разные., значения <strong>a</strong> и<strong> b</strong> надо будет каждый роа обнулять на новые)</p><p>p.s. это я что то упустил.</p>]]></description>
			<author><![CDATA[null@example.com (i2ks)]]></author>
			<pubDate>Tue, 07 Oct 2014 10:38:55 +0000</pubDate>
			<guid>https://linuxforum.ru/viewtopic.php?pid=425264#p425264</guid>
		</item>
	</channel>
</rss>
