📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

83行目: 83行目:
== sedコマンドの条件式 ==
== sedコマンドの条件式 ==
<center>
<center>
{| class="wikitable"
{| class="wikitable" | style="background-color:#fefefe;"
|-
|-
! 条件式 !! 説明
! style="text-align: center;background-color:#66CCFF;" | 条件式  
! style="text-align: center;background-color:#66CCFF;" | 説明
|-
|-
| 行数 || 処理する行数を指定する
| 行数 || 処理する行数を指定する
144行目: 145行目:
|}
|}
</center>
</center>
<br><br>
== デリミタ ==
sedコマンドには、置換のデリミタ (区切り文字) が複数存在する。<br>
機能的には同じ結果をもたらす。<br>
<br>
デリミタとしては他にも <code>:</code>、<code>@</code>、<code>#</code>などの文字を使用することができる。<br>
<br>
# <code>/</code>を区切り文字として扱う場合
sed -i "s/<lastmod>.*</lastmod>/<lastmod>${current_date}</lastmod>/g" hoge.xml
# <code>|</code>を区切り文字として扱う場合
sed -i "s|<lastmod>.*</lastmod>|<lastmod>${current_date}</lastmod>|g" hoge.xml
<br>
これらの違いが重要になる理由を以下に示す。<br>
* 可読性
*: パスやURLを含む文字列を扱う場合、/を含むことが多いため、|を使用すると読みやすくなることがある。
* エスケープの必要性
*: /をデリミタとして使用する場合、置換対象やパターン内に/が含まれている時、それをエスケープする必要がある。
*: |を使用すると、/をエスケープする必要がない。
<br>
上記では、XMLタグを扱っているため、どちらを使用しても問題ない。<br>
しかし、より複雑なパターンや<u>/</u> (スラッシュ) を含む文字列を扱う場合は、<u>|</u> (バーティカルバー) を使用する方が便利な場合がある。<br>
<br><br>
<br><br>