2

*grep '(^#|^ $)' ファイルを使用して、テキスト内の「#」または空行で始まる行を検索しました。

しかし、うまくいきません。

「sed & awk」という本を読むと、grepは正規表現の文法ですべてのメタ文字を完全に使用するわけではないと書かれているためです。

'(^#|^ *$)' という表現は、正規表現では単に違法なのでしょうか?それとも、grep がこの種の文法をサポートしていないためです。


再び疑問。'\' : 次の文字の特別な意味を閉じます。時には反対です。私が知っている反対のものは「()」「{}」です。は「|」です また、反対のものですか?まだいくつかありますか?ありがとう。

4

3 に答える 3

1

このそうでなければ OK 式が grep で機能するようにする\|には、bare の代わりに使用する必要があります。|

マンページから:

基本的な正規表現では、メタ文字 ?、+、{、|、(、および ) は特別な意味を失います。代わりに、\?、+、{、\|、(、および) のバックスラッシュ バージョンを使用します。

そこで、次の表現を試してください。

grep '\(^#\|^ *$\)' input

また:

grep '^\(#\| *$\)' input
于 2013-01-09T01:33:04.757 に答える
0

grep の拡張バージョンである egrep を使用できます。または、-Eオプションをに追加しますgrep。さらに、シェル内の特殊文字 (*、| など) との競合を避けるために、正規表現を引用符で囲むことをお勧めします。

于 2013-01-09T01:33:54.360 に答える
0

grep "または" を使用する

grep -e '^#' -e '^ *$' filename

参照

于 2013-01-09T01:32:52.417 に答える