TOP > Linux > Fedoraの技 > 301-400 > 303
正規表現とは
正規表現(Regular Expression)はLinuxなどで利用できる文字列のパターンを表現する仕組みです。大変強力であり、複雑でもあります。awk, grep, perl, sedコマンドなどで利用することができます。
メタキャラクタと呼ばれる特別な意味を持つ記号を利用して表記します。代表的なメタキャラクタには下記のものがあります。
. 改行以外の任意の1文字
* 直前の文字の0回以上の繰り返し
^ 行頭に一致
$ 行末に一致
[] 範囲の指定、指定のいずれか1文字
\(バックスラッシュ) メタキャラクタの否定する
下記は"."を使った例です。tcpで始まりxで終わる単語で間に任意の2文字が入るものを指定しています。
$ grep 'tcp..x' /etc/services
tcpmux 1/tcp # TCP port service multiplexer
tcpmux 1/udp # TCP port service multiplexer
下記は"*"を使った例です。sの0回以上の繰り返しですのでhttpもhttpsも対象となります。
$ grep 'https*' /etc/services
〜略〜
http 80/udp www www-http # HyperText Transfer Protocol
https 443/tcp # MCom
〜略〜
下記は"^"を使った例です。nameserverで始まる行を指定しています。
$ grep '^nameserver' /etc/services
nameserver 42/tcp name # IEN 116
nameserver 42/udp name # IEN 116
下記は"$"を使った例です。Telnetで終わる行を指定しています。
$ grep 'Telnet$' /etc/services
rtelnet 107/tcp # Remote Telnet
下記は"[]"と使った例です。[12]では1か2のどちらか、[1-4]では1から4までのいずれかという意味になります。
$ grep 'netrjs-[12]' /etc/services
$ grep 'netrjs-[1-4]' /etc/services
下記は"\"を使った例です。$をメタキャラクタではなく、そのまま検索しています。この場合''で括って利用します。
$ grep '\$' /etc/services
# $Id: services,v 1.40 2004/09/23 05:45:18 notting Exp $
2005-12-03 作成