正規表現
なんとなく使ってたので、改めて。
正規表現とは
文字列のパターンを表現する表記法で、文字列の検索や置換を行うときに利用される。
通常の文字と、特別な意味を持った記号(メタ文字)を組み合わせて表記する。
メタ文字
記号 | 意味 |
---|---|
・ | 任意の文字にマッチ |
* | 直前の文字の0回以上マッチ |
+ | 直前の文字の1回以上にマッチ |
? | 直前の文字の0回または1回にマッチ |
{n} | 直前の文字がn回にマッチ |
{n,} | 直前の文字がn回以上にマッチ |
{n,m} | 直前の文字がn回以上m以下にマッチ |
^ | 行頭にマッチ |
$ | 文末にマッチ |
[] | []内に含まれる一文字にマッチ |
[^ ] | []内に含まれないものにマッチ |
| | 区切られたいずれかの文字にマッチ |
() | グループ化する |
\1、\n | 後方参照。()にマッチした文字列にマッチ |
キャプチャ
文字列の中から正規表現に一致する部分文字列を抜き出す
文法の種類について
sedやgrepをオプションなしで使おうとすると、下記で\が必要となる
「+」「?」「{」「}」「(」「)」「|」
Perl
文法がさらに追加。最長マッチを行うかも指定できる
代表的なものは下記
記号 | 意味 |
---|---|
\d | 数字にマッチ = [0-9] |
\D | 数字以外の文字にマッチ = [^\d] |
\w | アルファベット、数字またはアンダーバーにマッチ = [a-zA-Z_0-9] |
\W | アルファベット、数字やアンダーバー以外の文字にマッチ = [^\w] |
\s | 空白文字、\f、\n、\r、\t や \vにマッチ |
\S | 空白文字以外の文字にマッチ = [^\s] |
grepコマンド
ファイルに対してパターンマッチングを行い、マッチする行を出力する。
grep option searchword targetfile
例
オプション -n で行番号も表示する
grep -n え test.txt
sedコマンド
文字列の置換,行の削除を行う
sed option targetfile
例
オプション -e で置換処理
オプション -f でファイルを指定して、そのファイル内に記載されている処理を行う
sed -e "s/だめ/いいよ/g" test.txt