Grepは奇妙なことに、出力から空白行を除外します。

Grepは奇妙なことに、出力から空白行を除外します。

たとえば、コメントフィルタリングと呼ばれる一般的なタスクを解決する場合は、次のようにします。

grep -v ^# /etc/apache2/apache2.conf

これにより、コメントと空白行がなくなります。これは予想されます。

他の方法は次のとおりです。

grep ^[^#] /etc/apache2/apache2.conf

しかし、同じ出力を取得しますが、空行はありません。なぜですか?

答え1

2つ目は、少なくとも1つの文字を含む行を見つけて、文字を持たない空の行が一致しないようにすることです。両方が必要な場合は、以下を試してください。

grep -e ^[^#] -e ^$ /etc/apache2/apache2.conf

答え2

grep -v ^#
  • 次に始まらない行を除く#
  • 空行はで始まらないので#ではありません。前任者含まれる

ヴィラ

grep ^[^#]
  • 以下を除くすべての文字で始まる行を含みます。#
  • 空行は次に終わりません。どの性格はそうではありません。存在する含まれる

関連情報