grepパターン^$と^の違い

grepパターン^$と^の違い

私はgrepがパターンのすべての空行と一致することを知っています^$。しかしそれは何を意味するか^。私が与えれば、grep '^' filenameすべての行に一致します。

grep '' filenameすべての行も一致します。

答え1

マニュアルgrepページでは、次の2つの記号について説明します。

固定
キャレット^とドル記号は、$それぞれ行の先頭と末尾の空の文字列と一致するメタ文字です。

検索は^すべての行の行の先頭のみに一致するため、すべて一致します。空の文字列検索には全く制限がないので、すべての行にも一致します。検索とは、^$「行の先頭を最初に一致させ、次に行の最後を一致させる」を意味します。これは空行です。foo()で始まるすべての行、または()で^foo終わるすべての行を見つけるなどの操作にも使用できます。barbar$

答え2

^行の始まりを示します。

^$これは、行の始まり、行の終わり$、その間に何もないことを意味します。

この正規表現を使用すると、空行を見つけて空行を削除/除外できます。

例えば。

grep -Ev '^$|^#'  /etc/sudoers

空行とハッシュ(#)で始まる行は除外されます。

関連情報