1.03.4標準
notes.txtから、空行と空白文字だけの行を削除して表示する。
内容のある行は変更しない。
適切なコマンドはどれか。
× 不正解
sedのアドレスに正規表現を指定し、dで一致したパターンスペースを出力せず次の行へ進められる。
詳細解説
誤り
sed '/^[[:space:]]*$/p' notes.txtpは該当行を追加表示し、既定出力もあるため削除にならない。
誤り。pは削除ではなく追加出力であり、-nなしでは該当する空白行が重複して見える。
誤り
sed '/^$/d' notes.txt文字を全く含まない空行だけを削除し、空白だけの行は残す。
誤り。^$は0文字の行だけへ一致するため、スペースやタブを含む行を残す。
正しい
sed '/^[[:space:]]*$/d' notes.txt空白0文字以上だけで構成される行へdを適用する。
正しい。[[:space:]]*が空白だけの行と空行の双方へ一致し、dがそれらを出力せず次へ進める。
誤り
grep -v '^$' notes.txt空行は除外できるが空白だけの行は一致せず残る。
誤り。反転検索で空行は除けるが、空白文字を含む行は^$に一致せず残る。
実際に確かめる
一時的な検証環境で実行できる例です。
printf 'alpha\n \n\nbeta\n' | sed '/^[[:space:]]*$/d'期待される結果
alpha
beta理解のポイント
- [[:space:]]は空白文字
- *は0回以上
- sedのdは行を削除
確認時の注意
- 確認環境: GNU sed 4.x / C.UTF-8ロケール
基礎のおさらい
sedのアドレス
/正規表現/の後ろへ命令を書くと、一致した行だけに処理を適用できる。
d命令
dは現在のパターンスペースを削除し、その行に対する後続処理を行わず次のサイクルへ進む。
問題IDKL-101-494
確認環境GNU sed 4.x / C.UTF-8ロケール
最終技術確認2026-08-13
誤り・権利侵害を報告