シェルや正規表現のエスケープについてのメモ

# bash特殊文字エスケープ

bashでは、以下の文字は特殊な意味を持つ
; & ( ) | ^ < > ? * [ ] $ ` ' " \ ! { } 改行 タブ スペース

これらの文字を普通の文字として記述したい場合には、エスケープする。
エスケープする方法は3通りある。
\ 直後の1文字をエスケープする
'' 囲まれた文字列の文字はすべて普通の文字と解釈される
"" 囲まれた文字列内の $ ` \ 以外の文字は普通の文字と解釈される。囲まれた文字列内の \ は、 \ の直後に $ ` \ がある場合以外普通の文字と解釈される。

# 正規表現、基本と拡張、エスケープ

基本でグループ化のために使うカッコはエスケープが必要。拡張では不要。
基本には+ ? |がない。+は{1,}、?は{0.}で代用可。|はどうしようもない。が、GNUだと基本でも\|が使えるとのこと。

基本正規表現を採用しているコマンド等:grep sed vim
拡張:egrep awk

特殊文字(普通の文字として書きたいときはエスケープが必要)
基本: , [ \ * ^ $
拡張: 基本の6文字に加え ( ) + ? { |

使い分けのヒント
基本:シェルスクリプト向き。シェルの特殊文字を使う時にエスケープが必要だけど、エスケープの必要な文字種が少ないから
拡張:コマンドライン向き。簡単に書けるから