私はgrepがパターンのすべての空行と一致することを知っています^$
。しかしそれは何を意味するか^
。私が与えれば、grep '^' filename
すべての行に一致します。
grep '' filename
すべての行も一致します。
答え1
マニュアルgrep
ページでは、次の2つの記号について説明します。
固定
キャレット^
とドル記号は、$
それぞれ行の先頭と末尾の空の文字列と一致するメタ文字です。
検索は^
すべての行の行の先頭のみに一致するため、すべて一致します。空の文字列検索には全く制限がないので、すべての行にも一致します。検索とは、^$
「行の先頭を最初に一致させ、次に行の最後を一致させる」を意味します。これは空行です。foo
()で始まるすべての行、または()で^foo
終わるすべての行を見つけるなどの操作にも使用できます。bar
bar$
答え2
^
行の始まりを示します。
^$
これは、行の始まり、行の終わり$
、その間に何もないことを意味します。
この正規表現を使用すると、空行を見つけて空行を削除/除外できます。
例えば。
grep -Ev '^$|^#' /etc/sudoers
空行とハッシュ(#)で始まる行は除外されます。