<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>文字列 &#8211; スグブログ</title>
	<atom:link href="https://sugublog.org/tag/%E6%96%87%E5%AD%97%E5%88%97/feed/" rel="self" type="application/rss+xml" />
	<link>https://sugublog.org</link>
	<description>ブログ運営について発信中</description>
	<lastBuildDate>Thu, 07 Mar 2024 09:03:22 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://sugublog.org/wp-content/uploads/2021/07/icon_20210703-min-150x150.png</url>
	<title>文字列 &#8211; スグブログ</title>
	<link>https://sugublog.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【シェルスクリプト】変数の文字列を切り出して抽出する方法！</title>
		<link>https://sugublog.org/shellscript-cutting-and-extracting-variable-strings/</link>
					<comments>https://sugublog.org/shellscript-cutting-and-extracting-variable-strings/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Thu, 07 Mar 2024 09:03:21 +0000</pubDate>
				<category><![CDATA[シェルスクリプト]]></category>
		<category><![CDATA[shellscript]]></category>
		<category><![CDATA[変数]]></category>
		<category><![CDATA[文字列]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=6472</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/07/script111-1024x597.jpg" class="webfeedsFeaturedVisual" /></p>ということで今回は、シェルスクリプトの変数の文字列を切り出して抽出する方法を、現役エンジニアの筆者がまとめます。 シェルスクリプトの変数で文字列を切り出して抽出する方法 今回紹介するshellscriptの変数で文字列を [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/07/script111-1024x597.jpg" class="webfeedsFeaturedVisual" /></p><div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="red"><div class="c-balloon__icon -square"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://sugublog.org/wp-content/uploads/2021/02/cropped-dog003-150x150.png" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/02/cropped-dog003-150x150.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">シェルスクリプトの変数の文字列を切り出して抽出したいエンジニア</span></div><div class="c-balloon__body -thinking -border-on"><div class="c-balloon__text">
<p><strong><span class="swl-inline-color has-swl-deep-01-color">shellscript</span></strong>で変数の少し違う文字列を別の変数を作成して使用していると、変数管理が複雑化するので何とかしたい</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>

<div class="swell-block-balloon"><div class="c-balloon -bln-right" data-col="green"><div class="c-balloon__icon -square"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://sugublog.org/wp-content/uploads/2021/02/mine_white_001.png" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/02/mine_white_001.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">管理人</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>そういった時に<strong><span class="swl-inline-color has-swl-deep-01-color">変数の文字列を切り出して抽出</span></strong>する事で解決します。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>

<div class="swell-block-balloon"><div class="c-balloon -bln-right" data-col="blue"><div class="c-balloon__icon -square"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://sugublog.org/wp-content/uploads/2021/04/illust10_01.png" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/04/illust10_01.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>変数が変化すれば切り出し抽出した文字列も変化するので、管理も運用も楽です。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p>ということで今回は、<span class="swl-format-1"><span class="swl-marker mark_orange"><strong>シェルスクリプトの変数の文字列を切り出して抽出する方法</strong></span></span>を、現役エンジニアの筆者がまとめます。</p>


<div class="p-blogParts post_content" data-partsID="5030">
<p>windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。</p>
</div>


<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">シェルスクリプトの変数で文字列を切り出して抽出する方法</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/09/code_0923-2-1-1024x683.jpg" alt="code" class="wp-image-4188" srcset="https://sugublog.org/wp-content/uploads/2021/09/code_0923-2-1-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/09/code_0923-2-1-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/09/code_0923-2-1-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2021/09/code_0923-2-1.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>今回紹介する<strong><span class="swl-inline-color has-swl-deep-01-color">shellscriptの変数で文字列を切り出して抽出</span></strong>する方法は以下の2本です。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>shellscriptの変数で文字列を切り出して抽出する方法２選</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li><span class="swl-inline-color has-swl-deep-01-color">数字</span>で指定して文字列を切り出して抽出する</li>



<li><span class="swl-inline-color has-swl-deep-01-color">パターン</span>で文字列を切り出して抽出する</li>
</ul>
</div></div>



<h2 class="wp-block-heading">数字で指定して文字列を切り出して抽出する</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://sugublog.org/wp-content/uploads/2021/09/randam_0915-6-1024x576.jpg" alt="文字列切り出し" class="wp-image-4171" srcset="https://sugublog.org/wp-content/uploads/2021/09/randam_0915-6-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/09/randam_0915-6-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/09/randam_0915-6-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/09/randam_0915-6.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>シェルスクリプトの変数を<span class="swl-inline-color has-swl-deep-01-color">数字で指定して</span>、文字列を切り出して抽出する方法の基礎は以下です。</p>



<p>記述がややこしいですが、下の表のように追加するコードを意識していくと分かりやすくなります。</p>



<figure class="wp-block-table"><table><thead><tr><th>種類</th><th>shellscript</th><th>説明</th><th>追加するコード</th></tr></thead><tbody><tr><th>&#8211;</th><td>変数=文字列</td><td>変数指定</td><td>&#8211;</td></tr><tr><th>&#8211;</th><td>${変数}</td><td>変数展開</td><td>${}</td></tr><tr><th colspan="4">文字列を切り出す方法</th></tr><tr><th>1</th><td>${変数:開始位置}</td><td>開始位置前方から</td><td>:開始位置</td></tr><tr><th>2</th><td>${変数: -開始位置}</td><td>開始位置後方から</td><td>: -開始位置</td></tr><tr><th>3</th><td>${変数:開始位置:個数}</td><td>開始位置と個数指定</td><td>: 開始位置:個数</td></tr><tr><th>4</th><td>${変数:開始位置:-末尾指定}</td><td>開始位置と末尾指定</td><td>:開始位置:-末尾指定</td></tr></tbody></table><figcaption class="wp-element-caption">シェルスクリプトの変数を数字で指定して文字列を切り出し抽出する方法</figcaption></figure>



<p class="is-style-big_icon_caution">※２の開始位置を後方から指定する場合の「:」と「-」の間に半角スペースが必要になる事が注意する点です。</p>



<h3 class="wp-block-heading">開始位置を<span class="swl-inline-color has-swl-deep-01-color">前方</span>から指定する文字列切り出し</h3>



<p>では開始位置を<span class="swl-inline-color has-swl-deep-01-color">前方から指定</span>する文字列切り出しを行います。</p>



<p>以下のような変数を指定します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>suuji=0123456789</code></pre></div>



<p>１を開始位置に指定して表示してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo ${suuji:1}</code></pre></div>



<p>このシェルスクリプトを実行してみます。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-2-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/shell-script-execution/">【シェルスクリプト基礎】コマンドを実行する様々な方法をご紹介！</a>
						<span class="p-blogCard__excerpt">シェルスクリプトを実行する時に困った事はありませんか？ シェルスクリプトのコマンド実行での失敗メッセージ一覧 「実行権限がありません」 「コマンドが見つかりませ&#8230;</span>					</div>
				</div>
			</div>
		</div>


<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>123456789</code></pre></div>



<p>結果は上記になりました。</p>



<p class="is-style-icon_book">シェルスクリプトで１番目を指定するのは「0」になります。今回は1を指定したので２番目の1から末尾までが表示されています。</p>



<p class="has-border -border01">2番目から末尾までがきちんと表示されています。</p>



<h3 class="wp-block-heading">開始位置を<span class="swl-inline-color has-swl-deep-01-color">後方</span>から指定する文字列切り出し</h3>



<p>次に開始位置を<span class="swl-inline-color has-swl-deep-01-color">後方から指定</span>する文字列切り出しを行います。</p>



<p>１を開始位置に指定して表示してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo ${suuji: -3}</code></pre></div>



<p>このシェルスクリプトを実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>789</code></pre></div>



<p>結果は上記になりました。</p>



<p class="has-border -border01">後方始まりで３つ目から末尾までがきちんと表示されています。</p>



<h3 class="wp-block-heading"><span class="swl-inline-color has-swl-deep-01-color">開始位置と個数</span>を指定する文字列切り出し</h3>



<p>次に<span class="swl-inline-color has-swl-deep-01-color">開始位置と個数を指定</span>する文字列切り出しを行います。</p>



<p>開始位置を３、個数を６に指定して表示してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo ${suuji:3:6}</code></pre></div>



<p>このシェルスクリプトを実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>345678</code></pre></div>



<p>結果は上記になりました。</p>



<p class="has-border -border01">開始位置が３で個数が６つきちんと表示されています。</p>



<h3 class="wp-block-heading"><span class="swl-inline-color has-swl-deep-01-color">開始位置と末尾</span>を指定する文字列切り出し</h3>



<p>次に<span class="swl-inline-color has-swl-deep-01-color">開始位置と末尾を指定</span>する文字列切り出しを行います。</p>



<p>開始位置を３、末尾を-3に指定して表示してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo ${suuji:3:-3}</code></pre></div>



<p>このシェルスクリプトを実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>3456</code></pre></div>



<p>結果は上記になりました。</p>



<p class="has-border -border01">開始位置が３で後方から3番目の6までが、きちんと表示されています。</p>



<h2 class="wp-block-heading">補足：配列に格納されている文字列を切り出して抽出</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/07/server_007-1024x683.jpg" alt="配列" class="wp-image-3594" srcset="https://sugublog.org/wp-content/uploads/2021/07/server_007-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/07/server_007-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/07/server_007-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2021/07/server_007-1536x1025.jpg 1536w, https://sugublog.org/wp-content/uploads/2021/07/server_007-scaled.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>同じ様に<span class="swl-marker mark_orange"><span class="swl-inline-color has-swl-deep-01-color">配列に格納されている文字列</span>も部分的に切り出して抽出</span>できます。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/12/PC教室20211216-7-e1709401330152-300x201.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/shell-script-array/">【シェルスクリプト】配列の使い方！宣言、格納、参照のやり方を教えます</a>
						<span class="p-blogCard__excerpt">shellscriptで配列を使いたいけど、どうやって扱えば良いかわかりません。 などと言ったシェルスクリプトの配列について難しいという声が多いです。 なので配列の宣言か&#8230;</span>					</div>
				</div>
			</div>
		</div>


<figure class="wp-block-table"><table><thead><tr><th>種類</th><th>shellscript</th><th>説明</th><th>追加するコード</th></tr></thead><tbody><tr><th>&#8211;</th><td>配列=(文字列1 文字列2 &#8230;)</td><td>配列に文字列格納</td><td>&#8211;</td></tr><tr><th>&#8211;</th><td>${配列[@]}</td><td>配列全て展開</td><td>${[@]}</td></tr><tr><th colspan="4">配列の文字列を切り出す方法</th></tr><tr><th>1</th><td>${配列[@]:開始位置}</td><td>開始位置前方から</td><td>:開始位置</td></tr><tr><th>2</th><td>${配列[@]: -開始位置}</td><td>開始位置後方から</td><td>: -開始位置</td></tr><tr><th>3</th><td>${配列[@]:開始位置:個数}</td><td>開始位置と個数指定</td><td>: 開始位置:個数</td></tr></tbody></table><figcaption class="wp-element-caption">シェルスクリプトの配列を数字で指定して文字列を切り出し抽出する方法</figcaption></figure>



<h3 class="wp-block-heading">配列で指定する文字列切り出し</h3>



<p>では同じ様に配列で指定する文字列切り出しを行います。以下のような配列があるとします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>array=(000 111 222 333 444 555)</code></pre></div>



<p>１を開始位置に指定して表示してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo ${array[@]:1}
echo ${array[@]: -3}
echo ${array[@]:1:3}</code></pre></div>



<p>このシェルスクリプトを実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>111 222 333 444 555
333 444 555
111 222 333</code></pre></div>



<p>結果は上記になりました。</p>



<p class="has-border -border01">変数の文字列切り出しと同様に、配列の中身が切り出されています。</p>



<h3 class="wp-block-heading">変数ではできて配列では<span class="swl-inline-color has-swl-deep-01-color">出来ない</span>切り出し</h3>



<p>変数ではできていた開始位置と後方位置を指定して切り出す方法だけは配列ではできません。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo ${array[@]:1:-1}</code></pre></div>



<p>上のシェルスクリプトを実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>-bash: -1: substring expression &lt; 0</code></pre></div>



<p class="is-style-big_icon_batsu">配列の「開始位置と後方位置を指定して切り出す方法」はエラーで切り出しできませんでした。</p>



<h2 class="wp-block-heading">パターンで文字列を切り出して抽出する</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/11/script_1114-1024x683.jpg" alt="スクリプト" class="wp-image-4504" srcset="https://sugublog.org/wp-content/uploads/2021/11/script_1114-1024x683.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/11/script_1114-300x200.jpg 300w, https://sugublog.org/wp-content/uploads/2021/11/script_1114-768x512.jpg 768w, https://sugublog.org/wp-content/uploads/2021/11/script_1114.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p><span class="swl-marker mark_orange"><strong>シェルスクリプトの変数をパターンで指定</strong>して、<strong>文字列を切り出して抽出する方法</strong></span>です。2パターンあります。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>パターンで指定して、文字列を切り出して抽出する方法2選</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>文字列の<span class="swl-inline-color has-swl-deep-01-color">先頭</span>からパターンマッチする</li>



<li>文字列の<span class="swl-inline-color has-swl-deep-01-color">後方</span>からパターンマッチする</li>
</ul>
</div></div>



<p>パターンで指定する時のコードも纏めておきます。</p>



<figure class="wp-block-table"><table><thead><tr><th>種類</th><th>shellscript</th><th>説明</th><th>追加するコード</th></tr></thead><tbody><tr><th>&#8211;</th><td>変数=文字列</td><td>変数指定</td><td>&#8211;</td></tr><tr><th>&#8211;</th><td>${変数}</td><td>変数展開</td><td>${}</td></tr><tr><th colspan="4">文字列をパターンで切り出す方法</th></tr><tr><th>1</th><td>${変数#パターン}</td><td>開始位置<span class="swl-inline-color has-swl-deep-02-color">前方</span>、<span class="swl-inline-color has-swl-deep-02-color">最短</span>マッチ</td><td>#パターン</td></tr><tr><th>2</th><td>${変数##パターン}</td><td>開始位置<span class="swl-inline-color has-swl-deep-02-color">前方</span>、<span class="swl-inline-color has-swl-deep-03-color">最長</span>マッチ</td><td>##パターン</td></tr><tr><th>3</th><td>${変数%パターン}</td><td>開始位置<span class="swl-inline-color has-swl-deep-03-color">後方</span>、<span class="swl-inline-color has-swl-deep-02-color">最短</span>マッチ</td><td>%パターン</td></tr><tr><th>4</th><td>${変数%%パターン}</td><td>開始位置<span class="swl-inline-color has-swl-deep-03-color">後方</span>、<span class="swl-inline-color has-swl-deep-03-color">最長</span>マッチ</td><td>%%パターン</td></tr></tbody></table><figcaption class="wp-element-caption">シェルスクリプトの変数をパターンで指定して文字列を切り出し抽出する方法</figcaption></figure>



<p class="is-style-icon_info">パターンマッチなので「*（アスタリスク）」が使用できます。アスタリスクは任意の文字列として扱えます。</p>



<h3 class="wp-block-heading">文字列の<span class="swl-inline-color has-swl-deep-01-color">先頭</span>からパターンマッチする</h3>



<p>では文字列の<span class="swl-inline-color has-swl-deep-01-color">先頭</span>からパターンマッチする時のシェルスクリプトを何個か記述してみます。</p>



<p>まず以下のような変数を指定しておきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>mojiretsu=shellscript.sh.zp</code></pre></div>



<h3 class="wp-block-heading">文字列の<span class="swl-inline-color has-swl-deep-01-color">先頭</span>からパターンマッチ１：<span class="swl-inline-color has-swl-deep-01-color">先頭文字指定</span></h3>



<p>以下のシェルスクリプトで先頭が「shell」の文字列であれば、指定した文字列を切り取って抽出します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo ${mojiretsu#shell}</code></pre></div>



<p>上のシェルスクリプトを実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>script.sh.zp</code></pre></div>



<p class="has-border -border01">結果は指定した「shell」を切り取って抽出できています。</p>



<h3 class="wp-block-heading">文字列の<span class="swl-inline-color has-swl-deep-01-color">先頭</span>からパターンマッチ２：<span class="swl-inline-color has-swl-deep-01-color">最短マッチ</span></h3>



<p>以下のシェルスクリプトで先頭が任意の文字列（*）で「.」の文字列があれば、最短マッチで指定した文字列を切り取って抽出します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo ${mojiretsu#*.}</code></pre></div>



<p>上のシェルスクリプトを実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>sh.zp</code></pre></div>



<p class="has-border -border01">結果は<span class="swl-inline-color has-swl-deep-01-color">最初に「.」があった文字列</span>までを切り取って抽出できています。</p>



<h3 class="wp-block-heading">文字列の<span class="swl-inline-color has-swl-deep-01-color">先頭</span>からパターンマッチ３：<span class="swl-inline-color has-swl-deep-01-color">最長マッチ</span></h3>



<p>先程と同じ条件で「.」の文字列があれば、最長マッチで指定した文字列を切り取って抽出します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo ${mojiretsu##*.}</code></pre></div>



<p>上のシェルスクリプトを実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>zp</code></pre></div>



<p class="has-border -border01">結果は<span class="swl-inline-color has-swl-deep-01-color">最後に「.」があった文字列</span>までを切り取って抽出できています。</p>



<h3 class="wp-block-heading">文字列の<span class="swl-inline-color has-swl-deep-02-color">末尾</span>からパターンマッチ１：<span class="swl-inline-color has-swl-deep-01-color">先頭文字指定</span></h3>



<p>今度は文字列の<span class="swl-inline-color has-swl-deep-01-color">末尾</span>からパターンマッチする時のシェルスクリプトを何個か記述してみます。</p>



<p>以下のシェルスクリプトで末尾が「zp」の文字列であれば、指定した文字列を切り取って抽出します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo ${mojiretsu%zp}</code></pre></div>



<p>上のシェルスクリプトを実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>shellscript.sh.</code></pre></div>



<p class="has-border -border01">結果は指定した「zp」を切り取って抽出できています。</p>



<h3 class="wp-block-heading">文字列の<span class="swl-inline-color has-swl-deep-01-color"><span class="swl-inline-color has-swl-deep-02-color">末尾</span></span>からパターンマッチ２：<span class="swl-inline-color has-swl-deep-01-color">最短マッチ</span></h3>



<p>以下のシェルスクリプトで末尾が任意の文字列（*）で「.」の文字列があれば、最短マッチで指定した文字列を切り取って抽出します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo ${mojiretsu%.*}</code></pre></div>



<p>上のシェルスクリプトを実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>shellscript.sh</code></pre></div>



<p class="has-border -border01">結果は<span class="swl-inline-color has-swl-deep-01-color">末尾から見て最初に「.」があった文字列</span>までを切り取って抽出できています。</p>



<h3 class="wp-block-heading">文字列の<span class="swl-inline-color has-swl-deep-01-color"><span class="swl-inline-color has-swl-deep-02-color">末尾</span></span>からパターンマッチ３：<span class="swl-inline-color has-swl-deep-01-color">最長マッチ</span></h3>



<p>先程と同じ条件で「.」の文字列があれば、最長マッチで指定した文字列を切り取って抽出します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>echo ${mojiretsu%%.*}</code></pre></div>



<p>上のシェルスクリプトを実行してみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>shellscript</code></pre></div>



<p class="has-border -border01">結果は<span class="swl-inline-color has-swl-deep-01-color">末尾から見て最後に「.」があった文字列</span>までを切り取って抽出できています。</p>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">まとめ：シェルスクリプトの変数で文字列を切り出して抽出する方法</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="576" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-1024x576.jpg" alt="スクリプト" class="wp-image-3872" srcset="https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-1024x576.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-300x169.jpg 300w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-4-768x432.jpg 768w, https://sugublog.org/wp-content/uploads/2021/08/script_0809-4.jpg 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p><strong><span class="swl-inline-color has-swl-deep-01-color"><span class="swl-marker mark_orange">shellscriptの変数で文字列を切り出して抽出する方法</span></span></strong>は以下の2本でした。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>shellscriptの変数で文字列を切り出して抽出する方法２選</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li><span class="swl-inline-color has-swl-deep-01-color">数字</span>で指定して文字列を切り出して抽出する</li>



<li><span class="swl-inline-color has-swl-deep-01-color">パターン</span>で文字列を切り出して抽出する</li>
</ul>
</div></div>



<h3 class="wp-block-heading">数字で指定して文字列を切り出して抽出する</h3>



<figure class="wp-block-table"><table><thead><tr><th>種類</th><th>shellscript</th><th>説明</th><th>実行結果</th></tr></thead><tbody><tr><th>&#8211;</th><td>suuji=0123456789</td><td>変数指定</td><td>&#8211;</td></tr><tr><th>&#8211;</th><td>${suuji}</td><td>変数展開</td><td>0123456789</td></tr><tr><th colspan="4">文字列を切り出す方法</th></tr><tr><th>1</th><td>${suuji:3}</td><td>開始位置前方から</td><td>3456789</td></tr><tr><th>2</th><td>${suuji: -3}</td><td>開始位置後方から</td><td>789</td></tr><tr><th>3</th><td>${suuji:3:6}</td><td>開始位置と個数指定</td><td>345678</td></tr><tr><th>4</th><td>${suuji:3:-3}</td><td>開始位置と末尾指定</td><td>3456</td></tr></tbody></table><figcaption class="wp-element-caption">シェルスクリプトの変数を数字で指定して文字列を切り出し抽出した結果まとめ</figcaption></figure>



<p class="is-style-big_icon_caution">※２の開始位置を後方から指定する場合の「:」と「-」の間に半角スペースが必要になる事が注意する点です。</p>



<h3 class="wp-block-heading">配列に格納されている文字列を切り出して抽出</h3>



<figure class="wp-block-table"><table><thead><tr><th>種類</th><th>shellscript</th><th>説明</th><th>実行結果</th></tr></thead><tbody><tr><th>&#8211;</th><td>array=(00 11 22 33 44 55)</td><td>配列に文字列格納</td><td>&#8211;</td></tr><tr><th>&#8211;</th><td>${array[@]}</td><td>配列全て展開</td><td>00 11 22 33 44 55</td></tr><tr><th colspan="4">配列の文字列を切り出す方法</th></tr><tr><th>1</th><td>${array[@]:1}</td><td>開始位置前方から</td><td>11 22 33 44 55</td></tr><tr><th>2</th><td>${array[@]: -3}</td><td>開始位置後方から</td><td>33 44 55</td></tr><tr><th>3</th><td>${array[@]:1:3}</td><td>開始位置と個数指定</td><td>11 22 33</td></tr></tbody></table><figcaption class="wp-element-caption">シェルスクリプトの配列を数字で指定して文字列を切り出し抽出した結果</figcaption></figure>



<h3 class="wp-block-heading">変数をパターンで指定して、文字列を切り出して抽出する方法</h3>



<div class="swell-block-capbox cap_box is-style-onborder_ttl"><div class="cap_box_ttl"><span>パターンで指定して、文字列を切り出して抽出する方法2選</span></div><div class="cap_box_content">
<ul class="wp-block-list">
<li>文字列の<span class="swl-inline-color has-swl-deep-02-color">先頭</span>からパターンマッチする</li>



<li>文字列の<span class="swl-inline-color has-swl-deep-03-color">後方</span>からパターンマッチする</li>
</ul>
</div></div>



<figure class="wp-block-table"><table><thead><tr><th>種類</th><th>shellscript</th><th>説明</th><th>実行結果</th></tr></thead><tbody><tr><th>&#8211;</th><td>mojiretsu=shellscript.sh.zp</td><td>変数指定</td><td>&#8211;</td></tr><tr><th>&#8211;</th><td>${mojiretsu}</td><td>変数展開</td><td>shellscript.sh.zp</td></tr><tr><th colspan="4">文字列をパターンで切り出す方法</th></tr><tr><th>1</th><td>${mojiretsu#shell}</td><td>開始文字指定</td><td>script.sh.zp</td></tr><tr><th>2</th><td>${mojiretsu#*.}</td><td>開始位置<span class="swl-inline-color has-swl-deep-02-color">前方</span>、<span class="swl-inline-color has-swl-deep-02-color">最短</span>マッチ</td><td>sh.zp</td></tr><tr><th>3</th><td>${mojiretsu##*.}</td><td>開始位置<span class="swl-inline-color has-swl-deep-02-color">前方</span>、<span class="swl-inline-color has-swl-deep-03-color">最長</span>マッチ</td><td>zp</td></tr><tr><th>4</th><td>${mojiretsu%zp}</td><td>開始文字後方指定</td><td>shellscript.sh.</td></tr><tr><th>5</th><td>${mojiretsu%.*}</td><td>開始位置<span class="swl-inline-color has-swl-deep-03-color">後方</span>、<span class="swl-inline-color has-swl-deep-02-color">最短</span>マッチ</td><td>shellscript.sh</td></tr><tr><th>6</th><td>${mojiretsu%%.*}</td><td>開始位置<span class="swl-inline-color has-swl-deep-03-color">後方</span>、<span class="swl-inline-color has-swl-deep-03-color">最長</span>マッチ</td><td>shellscript</td></tr></tbody></table><figcaption class="wp-element-caption">シェルスクリプトの変数をパターンで指定して文字列を切り出し抽出した結果</figcaption></figure>



<p class="is-style-icon_info">パターンマッチなので「*（アスタリスク）」が使用できます。アスタリスクは任意の文字列として扱えます。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-right" data-col="blue"><div class="c-balloon__icon -square"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://sugublog.org/wp-content/uploads/2021/02/mine_white_002-e1624111291945.png" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/02/mine_white_002-e1624111291945.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">管理人</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>このように<strong><span class="swl-inline-color has-swl-deep-01-color">シェルスクリプトの変数の文字列を切り出し</span></strong>する事で変数管理が楽になります。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/shellscript-cutting-and-extracting-variable-strings/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【bat】バッチで文字列を切り出して抽出する方法！変数を使用します！</title>
		<link>https://sugublog.org/bat-string-extraction/</link>
					<comments>https://sugublog.org/bat-string-extraction/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Wed, 29 Nov 2023 16:53:58 +0000</pubDate>
				<category><![CDATA[bat]]></category>
		<category><![CDATA[切り出し]]></category>
		<category><![CDATA[文字列]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=6030</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/07/money002-e1626536268834-1024x683.jpg" class="webfeedsFeaturedVisual" /></p>batファイルで文字列を切り出して抽出して使用したいです！ そういった疑問に現役エンジニアの筆者が答えていきます。 文字列を切り出し使用できれば、不要な文字を省いたりできて便利です。 より自分のやりたい事ができるbatフ [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/07/money002-e1626536268834-1024x683.jpg" class="webfeedsFeaturedVisual" /></p>
<p><strong>batファイル</strong>で<strong><span class="swl-inline-color has-swl-deep-01-color">文字列</span></strong>を<strong><span class="swl-inline-color has-swl-deep-01-color">切り出して</span></strong>抽出して使用したいです！</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="blue"><div class="c-balloon__icon -square"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://sugublog.org/wp-content/uploads/2021/02/cropped-dog003-150x150.png" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/02/cropped-dog003-150x150.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">batファイルで悩んでいる人</span></div><div class="c-balloon__body -thinking -border-on"><div class="c-balloon__text">
<p>文字を切り出して自由に変更したいです！何かいい方法はないでしょうか？</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p>そういった疑問に現役エンジニアの筆者が答えていきます。</p>


<div class="p-blogParts post_content" data-partsID="5030">
<p>windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。</p>
</div>


<p class="is-style-icon_good"><strong>文字列</strong>を<strong>切り出し</strong>使用できれば、不要な文字を省いたりできて便利です。</p>



<p>より自分のやりたい事ができるbatファイルになることでしょう！</p>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">batで文字列を切り出して抽出する方法</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/07/money003-1024x683.jpg" alt="切り出し" class="wp-image-3634"/></figure>
</div>


<h3 class="wp-block-heading">batで文字列を切り出して抽出する基礎構文</h3>



<p><span class="swl-marker mark_orange"><span class="swl-inline-color has-swl-deep-01-color">batファイルで文字列を切り出して一部を取得する方法</span>の基礎</span>は以下です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-c" data-file="文字列を切り出して抽出するバッチ" data-lang="C"><code>%変数名:~取得開始位置,範囲を指定（省略可能）%</code></pre></div>



<p>変数を使用します。%変数%で変数を展開します。変数の右に「:~」をつけて<span class="swl-inline-color has-swl-deep-01-color">「取得開始位置,範囲」</span>を指定します。</p>



<p>「変数名:」に<span class="swl-inline-color has-swl-deep-01-color">「取得開始ずらす,範囲」</span>を指定する。その後%で囲む。それを変数に代入すると考えるとわかりやすいです。</p>



<p class="is-style-icon_info">※取得開始位置は「~」を付けるのを忘れない事</p>



<h2 class="wp-block-heading">実践：変数から文字列を切り出し</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/07/server_007-8-1024x683.jpg" alt="切り出し" class="wp-image-3602"/></figure>
</div>


<h4 class="wp-block-heading">変数の先頭を3ずらして以降の文字列を切り出し</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-file="変数の先頭を3ずらして文字列を切り出し"><code>@echo off
set moji=ABCDEFG
echo %moji:~3%
pause</code></pre></div>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/12/PC教室20211216-8-300x229.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/bat-echo-off/">【bat基礎】バッチで「@echo off」の意味や効果とは？</a>
						<span class="p-blogCard__excerpt">batファイルの初めに「@echo off」という記載があると思いますが、この意味は何でしょうか？ なんの効果があるのでしょうか？「@echo off」が無ければどうなるのでしょ&#8230;</span>					</div>
				</div>
			</div>
		</div>


<p>moji変数に「ABCDEFG」を代入しています。</p>



<p>「%moji:~3%」で開始位置を3ずらして、範囲は省略しています。</p>



<p>batファイルの実行結果は次のようになりました。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/07/analytics-2-300x157.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/bat-execution/">【bat】バッチを実行する方法！実行できない時の対処法などをご紹介</a>
						<span class="p-blogCard__excerpt">batファイルが既にありそれを実行してと言われたけど、どうやって実行すればわからない人の悩みに答えます。 またbatを実行しようとしたけど、できなかった時の原因と対&#8230;</span>					</div>
				</div>
			</div>
		</div>


<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-file="変数の先頭を3ずらして文字列を切り出し結果"><code>DEFG</code></pre></div>



<p class="has-border -border02 is-style-big_icon_check"><strong><span class="swl-inline-color has-swl-deep-01-color">3つめ以降からの文字列</span></strong>が、切り出しされている事がわかります。</p>



<h4 class="wp-block-heading">変数の先頭を3ずらして2つの文字列を切り出し</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-file="変数の先頭を3ずらして2つ文字列を切り出し"><code>@echo off
set moji=ABCDEFG
echo %moji:~3,2%
pause</code></pre></div>



<p>「%moji:~3,2%」で開始位置を3ずらして、そこから2文字を取得するようなコマンドです。</p>



<p>batファイルの実行結果は次のようになりました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-file="変数の先頭を3ずらして2つ文字列を切り出した結果"><code>DE</code></pre></div>



<p class="has-border -border02"><strong><span class="swl-inline-color has-swl-deep-01-color">3つめ以降から2つの文字列</span></strong>が、切り出しされている事がわかります。</p>



<h4 class="wp-block-heading">変数の末尾3番目から全ての文字を取得する</h4>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-file="変数の末尾3番目から全ての文字列を切り出し"><code>@echo off
set moji=ABCDEFG
echo %moji:~-3%
pause</code></pre></div>



<p>「%moji:~-3%」で開始位置を末尾3番目から以降全ての文字列を切り出しています。</p>



<p class="is-style-icon_announce"><span class="swl-inline-color has-swl-deep-01-color">開始位置</span>を末尾から指定する場合は「-」をつければOKです。</p>



<p>batファイルの実行結果は次のようになりました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-file="変数の末尾を3ずらして以降全ての文字列を切り出した結果"><code>EFG</code></pre></div>



<p class="has-border -border02"><strong><span class="swl-inline-color has-swl-deep-01-color">末尾から3ずらして最後の文字まで文字列</span></strong>が、切り出しされている事がわかります。</p>



<h4 class="wp-block-heading">変数の先頭を2ずらして末尾から3つまでの文字列を切り出し</h4>



<p>「%moji:~2,-3%」で開始位置を3ずらして、末尾から3つまでの文字列を切り出しています。</p>



<p>batファイルの実行結果は次のようになりました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-file="変数の先頭を3ずらして2つ文字列を切り出した結果"><code>CD</code></pre></div>



<p class="has-border -border02"><strong><span class="swl-inline-color has-swl-deep-01-color">2つめ以降から末尾3つまでの文字列</span></strong>が、切り出しされている事がわかります。</p>



<p>同じ様に文字列を思い通りに切り出ししてみます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>@echo off
set moji=ABCDEFG
echo %moji:~2,-3%
echo %moji:~2,-2%
echo %moji:~2,-1%
pause</code></pre></div>



<p>batファイルの実行結果は次のようになりました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>CD
CDE
CDEF</code></pre></div>



<h2 class="wp-block-heading">変数から文字列を切り出しする時のエラーと解決法</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/06/shutterstock_1433996435-min-1024x683.jpg" alt="エラー" class="wp-image-2885"/></figure>
</div>


<p><span class="swl-marker mark_yellow"><strong><span class="swl-inline-color has-swl-deep-01-color">batファイルで変数</span></strong>から一部の文字列を切り出しする時に、<span class="swl-bg-color has-swl-deep-01-background-color">上手くいかない時</span>の見る所はやはりココ</span></p>



<p>下のbatファイルを作成してください。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-file="batファイルで変数や環境変数の値から一部を取得する時のエラーファイル"><code>@echo off

set test=123456789
set test=%test:2,-5%
echo %test%

pause</code></pre></div>



<p>test変数に「123456789」を代入しています。</p>



<p>「set test=%test:2,-5%」で先頭から2ずらして、末尾から5番目までの文字を省いた文字列を切り出ししようとしています。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-file="変数から文字列を切り取りするbatファイルの実行結果"><code>test:2,-5</code></pre></div>



<p>変数に指定した文字で「%」が省かれた文字列が表示されており、想定通りの結果ではありません。</p>



<p class="is-style-big_icon_check"><strong>バッチファイル</strong>の<strong><span class="swl-inline-color has-swl-deep-01-color">失敗の原因</span></strong>は、<strong>開始位置指定の時の「~」を忘れている事</strong>になります。</p>



<p>解決法は開始位置にしっかり「~」をつけることです。</p>



<h2 class="wp-block-heading">変数からある文字列以外を切り出しする方法</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="650" src="https://sugublog.org/wp-content/uploads/2021/06/kaiketsu-3-min-1024x650.jpg" alt="切り出し" class="wp-image-2894"/></figure>
</div>


<p>では次は<span class="swl-marker mark_orange"><strong><span class="swl-inline-color has-swl-deep-01-color">ある文字列以外</span></strong>を切り出しするbatファイル</span>です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>@echo off
set moji=ABCDEFG
echo %moji:C=%
pause</code></pre></div>



<p>「%moji:C=%」でCを空白に置き換える事で、指定したC以外の文字列を切り出しが可能になります。</p>



<p>batファイルの実行結果は次のようになりました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain" data-file="変数の先頭を3ずらして2つ文字列を切り出した結果"><code>ABDEFG</code></pre></div>



<p class="has-border -border02"><strong><span class="swl-inline-color has-swl-deep-01-color">指定した文字列以外</span></strong>が切り出しされている事がわかります。</p>



<p class="is-style-icon_pen">その他にも変数を扱えれば面白い事が可能です。詳しくは以下の記事にまとめています。</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type1" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/08/script_0809-11-300x195.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://sugublog.org/bat-hensu/">【bat】バッチファイルで変数や環境変数の使い方！エラー対処法あり</a>
						<span class="p-blogCard__excerpt">バッチファイルで変数や環境変数を設定するやり方を教えます。 その他にも変数に関わる事をご紹介します。 この記事でわかる事 変数を指定する時の注意点など 計算結果&#8230;</span>					</div>
				</div>
			</div>
		</div>


<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">まとめ：batで文字列を切り出して抽出する方法</h2>



<p>今回行ったbatでの文字列切り出し例を下の表にまとめておきます。</p>



<figure class="wp-block-table"><table><thead><tr><th>shellの書き方の説明</th><th>shellの書き方</th><th>開始位置</th><th>範囲</th><th>切り出し文字</th><th>結果</th></tr></thead><tbody><tr><td>変数指定</td><td>変数</td><td>&#8211;</td><td>&#8211;</td><td>&#8211;</td><td>ABCDEFG</td></tr><tr><td>展開</td><td>%変数%</td><td>&#8211;</td><td>&#8211;</td><td>全て</td><td>ABCDEFG</td></tr><tr><td>開始位置指定</td><td>%変数:~3%</td><td>3</td><td>無し</td><td>3番目から最後まで</td><td>DEFG</td></tr><tr><td>開始位置と個数指定</td><td>%変数:~3,2%</td><td>3</td><td>2個</td><td>3番目から2個</td><td>DE</td></tr><tr><td>開始位置は末尾から</td><td>%変数~-3%</td><td>-3</td><td>無し</td><td>末尾3番目から最後まで</td><td>EFG</td></tr><tr><td>開始位置指定、範囲は末尾</td><td>%変数~2,-3%</td><td>2</td><td>末尾3つまで</td><td>2番目から末尾3つまで</td><td>CD</td></tr></tbody></table><figcaption class="wp-element-caption">シェルスクリプト例のまとめ</figcaption></figure>



<p class="is-style-icon_info">※取得開始位置は「~」を付けるのを忘れない事</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/bat-string-extraction/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
