トップ > 初級編 > その他 >
exコマンドの置換に /(スラッシュ) を含める

  

/(スラッシュ) をexコマンドでの置換に含めるには

この記事では、/(スラッシュ) をexコマンドでの置換に含める方法について説明します。

exコマンドでの置換はすでに説明しましたが、これまで説明した内容では、/(スラッシュ) を含むテキストを置換することはできません。 なぜなら、置換の区切り文字が /(スラッシュ) だからです

例えば、全行を対象に、テキスト "old" を "new" に置換するには、

:%s/old/new/<Enter>

というexコマンドを実行します。 このように、/(スラッシュ) を区切りとしてexコマンドを実行するため、/(スラッシュ) を置換前や置換後のテキストに含めることはできません。

/(スラッシュ) をexコマンドでの置換に含める方法は2つあります。 1つは \(バックスラッシュ) でエスケープ処理する方法、もう1つは /(スラッシュ) 以外の区切り文字を使う方法です。 この記事では、それぞれの方法について解説します

  
\ はバックスラッシュです。 バックスラッシュはUNIX系OSでは \(バックスラッシュ) として正しく表示されますが、Windows では ¥(円マーク) として表示されます。 どちらにしても、日本語キーボードからは ¥(円マーク) で入力します。
  
ウェブ上でのバックスラッシュの表示は、ウェブブラウザによって異なります。 \(バックスラッシュ) として表示するものもあれば ¥(円マーク) として表示されるものもあります。

なお、この記事では以下のテキストを例に操作を説明します

  1. ^
  2. $
  3. .
  4. *
  5. [
  6. ]
  7. /
  8. ~
  9. \
 
  
3行目はピリオドです。

\(バックスラッシュ) でエスケープ処理する方法

まずは、\(バックスラッシュ) でエスケープ処理する方法を解説します。 なお、ここでは "/"(スラッシュ) を "Slash" に変換するものとして説明します。

exコマンドの置換で指定する置換前や置換後のテキストでは、正規表現と同様に \(バックスラッシュ) でのエスケープ処理が行えます。 エスケープ処理することで、/(スラッシュ) を区切り文字ではなく、文字の "/"(スラッシュ) として扱わせることができます。

では、実際に \(バックスラッシュ) で /(スラッシュ) をエスケープ処理して置換しましょう。

文字カーソルは文書の先頭にある
文字カーソルは文書の先頭にある

上図のように文字カーソルは文書の先頭にあると仮定して説明を始めます

では、/(スラッシュ) をエスケープ処理して置換しましょう。 置換前のテキストである "/" を "\/" にエスケープ処理します。

キーボードから :%s/\//Slash/<Enter> を入力してください。

:%s/\//Slash/<Enter>
/ が Slash に置換される
/ が Slash に置換される

上図のように"/" が "Slash" に置換されます

このように、\(バックスラッシュ) でエスケープ処理することで、置換前や置換後のテキストに /(スラッシュ) を含めることができます。

/(スラッシュ) 以外の区切り文字を使う方法

続いて、/(スラッシュ) 以外の区切り文字を使う方法を解説します。 なお、ここでも "/"(スラッシュ) を "Slash" に変換するものとして説明します。

exコマンドの置換では、区切り文字に /(スラッシュ) 以外の文字を使うこともできます。 ただし、区切り文字に使えるのは、英数字でなく \(バックスラッシュ)でも、"(二重引用符)でも、|(パイプ) でもない1文字です。

なお、区切り文字は自動的に認識されます。 コマンドである "s" の次の文字が区切り文字と認識されます。

  
筆者は ,(カンマ) を使うことが多いです。

では、実際に置換してみましょう。

文字カーソルは文書の先頭にある
文字カーソルは文書の先頭にある

上図のように文字カーソルは文書の先頭にあると仮定して説明を始めます

では、/(スラッシュ) 以外の文字を区切り文字として置換しましょう。 なお、ここでは ,(カンマ) を区切り文字として使います。

キーボードから :%s,/,Slash,<Enter> を入力してください。

:%s,/,Slash,<Enter>
/ が Slash に置換される
/ が Slash に置換される

上図のように"/" が "Slash" に置換されます

このように、/(スラッシュ) 以外の文字を置換の区切り文字として使うことができます。

  
,(カンマ) を区切り文字にすると、,(カンマ) を置換前や置換後のテキストに含めることはできなくなります。
  
置換前や置換後のテキストに含まれない1文字を区切り文字にしましょう。
  
区切り文字として使える文字全てが置換前や置換後のテキストに含まれている場合はエスケープ処理しましょう。
  
  

まとめ

exコマンドでの置換では、\(バックスラッシュ) でエスケープ処理することで、/(スラッシュ) を置換前や置換後のテキストに含めることができます。

また、exコマンドの置換では、区切り文字に /(スラッシュ) 以外の文字を使うこともできます。 なお、区切り文字に使えるのは、英数字でなく \(バックスラッシュ)でも、"(二重引用符)でも、|(パイプ) でもない1文字です。

メニュー