LinuCレベル1 GNUとUnixのコマンド 問39
GNUとUnixのコマンド/正規表現を使用したテキストファイルの検索設定ファイル app.conf から、行頭が # のコメント行と空行を除いた行だけを表示したい。コマンドとして適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル1の出題範囲「GNUとUnixのコマンド」に対応。実際の試験問題ではありません)
- Agrep -v -e '^#' -e '^$' app.conf
- Bgrep -e '^#' -e '^$' app.conf
- Cgrep -v '^#$' app.conf
- Dgrep -c -v '^#' app.conf
正解:A
解説
grep の -v は、パターンに一致しない行を表示する(選択を反転する)オプションです。-e はパターンを指定するオプションで、複数並べるといずれかに一致する行が対象になります。'^#' は行頭が # の行、'^$' は行頭の直後が行末、つまり空行に一致します。したがって -v と組み合わせると、コメント行と空行を除いた有効な設定行だけが表示されます。grep -Ev '^(#|$)' のように拡張正規表現でまとめて書くこともできます。
選択肢ごとの解説
- A正しい。コメント行と空行のいずれかに一致する行を -v で除外し、残りの行を表示します。
- B誤り。-v が無いため、逆にコメント行と空行だけが表示されます。
- C誤り。'^#$' は「# の1文字だけの行」に一致するので、除外されるのはその行だけで、一般のコメント行や空行は残ります。
- D誤り。-c は一致した行の数を表示するオプションで、行の内容は表示されません。また空行も数に含まれます。