0

変数がこの形式であるかどうかを確認し--- foobar---> <some other stuff> たい つまり、テキストがで始まるかどうかを知りたい--- foobar --->

だから私は使用grep -qしましたが、このエラーが発生しました:

$echo "---  foobar---> subtree " | grep -q "--- fooobar--->*" 
grep: unrecognized option `--- fooobar--->*'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.

(これはOSXであり、grep's version is:

$ grep --v
grep (GNU grep) 2.5.1

Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

)

予想される文字列に一致するように正規表現を書き直すにはどうすればよいですか?

ありがとう。

4

1 に答える 1

3

-e正規表現の直前に追加することで、エラーを修正できます。

grep -q -e "--- fooobar--->*"

マニュアルページから:

 -e PATTERN, --regexp=PATTERN
        Use PATTERN as the pattern; useful to protect patterns beginning with -.

正規表現自体に関しては、*正規表現では「前の文字を0回以上繰り返す」ことを意味するため、正規表現はチェックし--- fooobar---てから0文字以上の>文字をチェックしています。

任意の数の任意の文字に一致させたい場合は、.*代わりに次を使用します。

grep -q -e "--- fooobar--->.*"

ただし、行が一致するかどうかを確認しているだけのように見えるため.*、最後に実際には何も変更されていないため、完全に削除しても同じように動作します。

パターンの先頭にa を追加することもでき^ます。これは、「他のコンテンツ... --- foobar---> baz」のような行と一致しないようにするための行頭アンカーです。

于 2013-02-15T19:37:00.923 に答える