この記事では、/(スラッシュ) をexコマンドでの置換に含める方法について説明します。
exコマンドでの置換はすでに説明しましたが、これまで説明した内容では、/(スラッシュ) を含むテキストを置換することはできません。 なぜなら、置換の区切り文字が /(スラッシュ) だからです。
例えば、全行を対象に、テキスト "old" を "new" に置換するには、
:%s/old/new/<Enter>
というexコマンドを実行します。 このように、/(スラッシュ) を区切りとしてexコマンドを実行するため、/(スラッシュ) を置換前や置換後のテキストに含めることはできません。
/(スラッシュ) をexコマンドでの置換に含める方法は2つあります。 1つは \(バックスラッシュ) でエスケープ処理する方法、もう1つは /(スラッシュ) 以外の区切り文字を使う方法です。 この記事では、それぞれの方法について解説します。
なお、この記事では以下のテキストを例に操作を説明します。
- ^
- $
- .
- *
- [
- ]
- /
- ~
- \
まずは、\(バックスラッシュ) でエスケープ処理する方法を解説します。 なお、ここでは "/"(スラッシュ) を "Slash" に変換するものとして説明します。
exコマンドの置換で指定する置換前や置換後のテキストでは、正規表現と同様に \(バックスラッシュ) でのエスケープ処理が行えます。 エスケープ処理することで、/(スラッシュ) を区切り文字ではなく、文字の "/"(スラッシュ) として扱わせることができます。
では、実際に \(バックスラッシュ) で /(スラッシュ) をエスケープ処理して置換しましょう。
上図のように文字カーソルは文書の先頭にあると仮定して説明を始めます。
では、/(スラッシュ) をエスケープ処理して置換しましょう。 置換前のテキストである "/" を "\/" にエスケープ処理します。
キーボードから :%s/\//Slash/<Enter> を入力してください。
:%s/\//Slash/<Enter>
上図のように"/" が "Slash" に置換されます。
このように、\(バックスラッシュ) でエスケープ処理することで、置換前や置換後のテキストに /(スラッシュ) を含めることができます。
続いて、/(スラッシュ) 以外の区切り文字を使う方法を解説します。 なお、ここでも "/"(スラッシュ) を "Slash" に変換するものとして説明します。
exコマンドの置換では、区切り文字に /(スラッシュ) 以外の文字を使うこともできます。 ただし、区切り文字に使えるのは、英数字でなく \(バックスラッシュ)でも、"(二重引用符)でも、|(パイプ) でもない1文字です。
なお、区切り文字は自動的に認識されます。 コマンドである "s" の次の文字が区切り文字と認識されます。
では、実際に置換してみましょう。
上図のように文字カーソルは文書の先頭にあると仮定して説明を始めます。
では、/(スラッシュ) 以外の文字を区切り文字として置換しましょう。 なお、ここでは ,(カンマ) を区切り文字として使います。
キーボードから :%s,/,Slash,<Enter> を入力してください。
:%s,/,Slash,<Enter>
上図のように"/" が "Slash" に置換されます。
このように、/(スラッシュ) 以外の文字を置換の区切り文字として使うことができます。
exコマンドでの置換では、\(バックスラッシュ) でエスケープ処理することで、/(スラッシュ) を置換前や置換後のテキストに含めることができます。
また、exコマンドの置換では、区切り文字に /(スラッシュ) 以外の文字を使うこともできます。 なお、区切り文字に使えるのは、英数字でなく \(バックスラッシュ)でも、"(二重引用符)でも、|(パイプ) でもない1文字です。