正規表現

 あるパターンの文字列を表現する手段として正規表現があり、特定の文字列パターンを簡潔に表現できる
 ※正規表現とワイルドカードは異なるので注意

正規表現に使われるメタキャラクタ
. 任意の1文字
^ 行頭
$ 行末
* 直前の文字の0回以上の繰り返し(0個も含む)
[ ] []で囲まれた文字のいずれか1文字
  [-]で範囲指定
  [^]で指定された文字以外を指定
\ 直後の1文字(メタキャラクタ)を通常の文字として処理


sedによるテキストストリームの加工とgrepによるファイル検索

sed [オプション] [コマンド] [ファイル名] セッド
文字の変換を行う
主なオプション
 -e:コマンドを指定
 -f:コマンドが記述されたスクリプトを指定
主なコマンド
 d 行を削除
 s/ / /:それぞれの行で最初に一致した文字列だけ置換(s/パターン/置換文字列/)
 s/ / /g:全体を置換(s/パターン/置換文字列/g)
 s/ / /数値:それぞれの行で指定した数値番目の文字列だけ置換(s/パターン/置換文字列/数値)
grep [オプション] 検索パターン [ファイル名] グレップ
ファイル内の特定の文字列を含む行を検索する
 -c:マッチした行数のみ表示
 -n:マッチした行と行番号を表示
 -v:マッチしない行を表示
 -i:大文字と小文字の区別をしない
 -f:ファイルから検索パターンを読み込んで検索する
 -E:拡張された正規表現も使用する

$ cat regulare.txt
 Linux OS
 Fedora Core
 Web Server
 LinuxProfessionalInstitute
 UNIX
 Linux,Windows,FreeBSD
 LLLINUX

$ sed s/UNIX/Linux/g regulare.txt ←文字列「UNIX」を「Linux」に変換
 Linux OS
 Fedora Core
 Web Server
 LinuxProfessionalInstitute
 Linux ←変換されている
 Linux,Windows,FreeBSD
 LLLINUX

$ sed 's/^/#/' regulare.txt ←行頭に「#」を追加
 #Linux OS
 #Fedora Core
 #Web Server
 #LinuxProfessionalInstitute
 #UNIX
 #Linux,Windows,FreeBSD
 #LLLINUX
※コマンドを「's/^/#/g'」にしても結果は同じになる。
(1行の中に、行頭は1つしか無いため)

$ sed 's/L./\*/g' regulare.txt ←「L」に続く何か1文字の計2文字を「*」に変換
*nux OS ←「Li」が「*」に変換されている
Fedora Core ←「L」が無いので変換されてない
Web Server
*nuxProfessionalInstitute
UNIX
*nux,Windows,FreeBSD
**NUX ←「LL」と「LI」が「*」に変換されている

$ sed 's/L*/#/g' regulare.txt ←0個以上の「L」を「#」に変換
 #i#n#u#x# #O#S# ←「L」は「#」に変換されている為、削除されている
 #F#e#d#o#r#a# #C#o#r#e# ←各文字の間に0個の「L」が有ると見なされ
              「#」が挿入される

 #W#e#b# #S#e#r#v#e#r#
 #i#n#u#x#P#r#o#f#e#s#s#i#o#n#a#l#I#n#s#t#i#t#u#t#e#
 #U#N#I#X#
 #i#n#u#x#,#W#i#n#d#o#w#s#,#F#r#e#e#B#S#D#
 #I#N#U#X#

$ sed 's/[A-L]/#/g' regulare.txt ←大文字の「A」〜「L」を「#」に変換
 #inux OS
 #edora #ore ←「F」と「C」が変換されている
 Web Server
 #inuxProfessional#nstitute
 UN#X ←「UN」「X」は変換されない
 #inux,Windows,#ree#S#
 ####NUX

$ sed 's/[^A-L]/#/' regulare.txt ←最初に条件に一致するものだけ変換
 L#nux OS ←条件が「A」〜「L」以外なので「i」が変換されている
 F#dora Core ←「dora」と「ore」も条件に合うが
        オプションが最初に一致するものだけなので変換されない

 #eb Server
 L#nuxProfessionalInstitute
 #NIX
 L#nux,Windows,FreeBSD
 LLLI#UX