平成15年度 専門コア情報処理演習
y
(理学部 数理情報科学科い組 対象、塩田教官)
y
11月17日の教材(3)
前へ
/
戻る
/
次へ
□ 検索文字列のパターン要素
検索文字列は単純な文字列だけではなく、 次のようなパターン要素を組み合わせることで複雑な検索を行なうことができます。
^
行頭
$
行末
.
任意の1文字
[...]
大括弧の中の任意の1文字と一致する1文字
[^...]
大括弧の中の任意の1文字と一致しない1文字
*
直前の文字または正規表現(パターン)の0回以上の繰り返し
.*
0文字以上の任意の文字列
\
エスケープ(次の文字の特別な意味をなくす)
grep コマンドにとっての特殊文字の中には、 Cシェルにとっても特殊な意味を持つ文字があります。 このようなときは、特殊文字をバックスラッシュ(\)でエスケープするか、 シングルクォート(')で検索文字列を囲んでやる必要があります。
以後、' で囲むやり方で説明していきます。
サーカムフレックス(^)
は行頭を表します。
grep '^T' staff
ドル記号($)
は行の終わりを表します。
grep 'mi$' staff
ピリオド(.)
は任意の1文字を表します。 (Cシェルコマンドラインでの ? に相当します。) 例えば
^...e
とすると、 先頭から4文字めが e である、 ということになります。
grep '^...e' staff
アスタリスク(*)
が文字またはパターンの後ろについたときは、
「その文字またはパターンが 0 回以上任意回数繰り返される」
と解釈します。 0 回も許されるので注意が必要です。
/usr/dict/words には英語のスペルチェック用の辞書があります。 これを使ってパターンマッチングの練習をしてみましょう。 例えば "e" が1文字以上続いた後に man が 来る単語を検索するには次のようにします。
grep 'ee*man' /usr/dict/words
また、 "o" が2文字以上続いた後に p が来る単語を検索するには次のようにします。
grep 'ooo*p' /usr/dict/words
ドル記号やアスタリスクなどの特殊文字を含む行を検索するには、
バックスラッシュ(\,キーボードでは¥)
を 付けて エスケープします。
grep '\*' staff
大括弧 [ ]
で囲むと、その中の1文字と一致する文字を検索します。
grep '^[PQR]i' staff
サーカムフレックス(^)が大括弧の中にあると、
その後の文字と一致しない
という意味になります。
grep '^[^P-R]i' staff
スペースを含む文字列を検索する時には、 検索文字列全体を
ダブルクォート(")
で囲みます。
grep "o O" staff
前へ
/
戻る
/
次へ