レス
前レス元トピ次レス
タイトル
Re: grep・sedの正規表現について
フォーラム
最強WEB問題集LinuC/LPIC Lv1 101
投稿ユーザ(投稿日)
(2014/3/14)
本文
ご確認いただいたgrepですが、-Eオプションで拡張正規表現が使用できる設定(egrepと同じ)になっています。
-Eオプションがない場合は、¥が必要です。

作成したサンプル
[code]
[user@LPIC101 grep]$ cat regexp.txt
a
a+a
a+aa
aaa
xxa
xxaa
xxaaa
abc|def
abc
def
acb
dfe
[/code]

[code]
[user@LPIC101 grep]$ grep 'a+a' regexp.txt
a+a
a+aa
[/code]
¥がないと"+"という文字列として認識されるので
a+aを含まない行がマッチしない

[code]
[user@LPIC101 grep]$ grep 'a\+a' regexp.txt
a+aa
aaa
xxaa
xxaaa
[/code]
¥があると+がメタキャラクタとして認識されるので
aが2回連続しない"a+a"はマッチしなくなる。

[code]
[user@LPIC101 grep]$ grep 'abc|def' regexp.txt
abc|def
[/code]
|が文字列として認識されているので、"abc|def"を含む行のみマッチ

[code]
[user@LPIC101 grep]$ grep 'abc\|def' regexp.txt
abc|def
abc
def
[/code]
¥があると|がメタキャラクタとして認識されるので
"abc"または"def"どちらか一方が含まれているとマッチする



参考
[code]
[user@LPIC101 grep]$ grep -E 'abc\|def' regexp.txt
abc|def
[/code]
-Eオプションをつけると拡張正規表現となるので
¥の後の"|"がエスケープされ、"abc|def"を含む行がマッチする

レス一覧

前レス元トピ次レス


Ping-tモバイルTOP

Copyright (c) 2010
Ping-t All rights reserved.