過去問ドリル

LinuCレベル1 GNUとUnixのコマンド 問39

GNUとUnixのコマンド/正規表現を使用したテキストファイルの検索

設定ファイル app.conf から、行頭が # のコメント行と空行を除いた行だけを表示したい。コマンドとして適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル1の出題範囲「GNUとUnixのコマンド」に対応。実際の試験問題ではありません)

正解:A

解説

grep の -v は、パターンに一致しない行を表示する(選択を反転する)オプションです。-e はパターンを指定するオプションで、複数並べるといずれかに一致する行が対象になります。'^#' は行頭が # の行、'^$' は行頭の直後が行末、つまり空行に一致します。したがって -v と組み合わせると、コメント行と空行を除いた有効な設定行だけが表示されます。grep -Ev '^(#|$)' のように拡張正規表現でまとめて書くこともできます。

選択肢ごとの解説

  • A正しい。コメント行と空行のいずれかに一致する行を -v で除外し、残りの行を表示します。
  • B誤り。-v が無いため、逆にコメント行と空行だけが表示されます。
  • C誤り。'^#$' は「# の1文字だけの行」に一致するので、除外されるのはその行だけで、一般のコメント行や空行は残ります。
  • D誤り。-c は一致した行の数を表示するオプションで、行の内容は表示されません。また空行も数に含まれます。
LinuCレベル1の問題を演習モードで解く