« ブラウザごとに振り分け | メイン | requireとincludeの違いについて »

2007年07月31日

sed sed sed

 特定の文字列を抜き出す

 sedの置換では置換条件で「(...)」にくくった文字列を置き換え文字として利用できる。その際,始めに現われた(...)が「\1」,次に現われた(...)が「\2」に代入される。

 たとえば,拡張子部分(ドットより後の文字列)を抜き出したい場合は,

$ file_name="linux.txt"
$ echo $file_name | sed -e "s/.*\.\([^.]*\)\$/\1/g"
txt


とする。この場合はドットから末尾までの文字列でその中にドットが入っていない文字列を抜き出し,文字列全体と抜き出した文字列を置換している。

. 改行文字以外の任意の1文字
* 直前の1文字の0回以上の繰り返しに一致。直前の文字は正規表現でも構わない
^ 行の先頭
$ 行の末尾
[ ] かっこ内の任意の1文字に一致。ハイフン(-)で範囲指定もできる
[^ ] かっこ内の任意の1文字に不一致。ハイフン(-)で範囲指定もできる
\+ 直前の文字の1個以上の繰り返しに一致
\? 直前の文字の0または1文字に一致
\{n\} 直前の文字のn個の繰り返しに一致
\{n,\} 直前の文字のn個以上の繰り返しに一致
\{,m\} 直前の文字のm個以下の繰り返しに一致
\{n,m\} 直前の文字のn個以上,m個以下の繰り返しに一致
パターン1\|パターン2 パターン1またはパターン2のいずれかに一致
\(パターン\) パターンをグループ化する。マッチした内容は\1や\2として利用できる
\ 正規表現に使われる記号を普通の文字として扱う

投稿者 muuming : 2007年07月31日 09:39

コメント

コメントしてください




保存しますか?