0

'\'をいつ使用すべきかについて非常に混乱しています。

例を考えてみましょう。

(1)

$ grep -Eh '^(bz|gz|zip)' filenames.txt

bz、gz、またはzipのいずれかで始まる結果と一致します。

(2)

$ echo "(555) 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)? [0-9] [0-9][0-9]$'

出力:(555)123-4567


  1. 例(1)では、括弧をエスケープするために「\」が必要ないのはなぜですか()
  2. 例(2)では、()をエスケープするために「\」が必要なのはなぜですか?

Ubuntuディストリビューションを使用しています。

4

1 に答える 1

4

それぞれの例の括弧は、異なる意味を持っています。

最初の例では、括弧はグループ化されており、ファイル名と照合されません。したがって、で始まり、bzではないファイルが見つかります(bz

2番目の例では、括弧はリテラルであり、実際には照合する電話番号に表示されます。

于 2012-05-06T04:30:22.427 に答える