Re: grep・sedの正規表現について

この質問の投稿一覧へ

なし Re: grep・sedの正規表現について

msg# 1.2
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2014-3-15 5:38 | 最終変更
gndqj583  新米   投稿数: 3
ご確認いただいたgrepですが、-Eオプションで拡張正規表現が使用できる設定(egrepと同じ)になっています。
-Eオプションがない場合は、¥が必要です。

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

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

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

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

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



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

投稿ツリー

  >フォーラム検索へ


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