web-dev-qa-db-ja.com

grepを使用して「a」で始まり「c」で終わる行を見つける方法

newfileという名前のファイルがあります。このファイルの内容は次のとおりです。

abc
xyz
abc

ここで、aで始まりcで終わる行を検索します。次のコマンドを入力しましたが、結果は予想とは異なります。

grep -E   '^ac$' newfile

このコマンドの問題は、^ac$を使用すると、コマンドがacで始まるのではなく、aで始まると解釈することです。

1
Kishan Kumar

このコマンドの問題は、^ ac $を使用すると、コマンドが「a」ではなく「ac」で始まると解釈することです。

あんまり。 $アンカー を使用したため、ac文字列の直後で終了する行を検索しているため、正確に単一のacを含む行のみが検索されます。文字が一致します。

これらの文字の間の任意の文字を許可するには、任意の文字のカウントに正規表現を使用します:.*(または、例のabcのように1文字のみを許可する場合は、.を使用しますなし 量指定子 like *。)

ちなみに、この正規表現のオプション-Eは、これら2つのバリアントで異なる構文を含まないため、単に省略できます。

結果は次のとおりです。

grep '^a.*c$' newfile
4
Melebius