クリップボードにコピーしました!
文字列のsed

sedで行を削除する基本と応用を初心者向けに解説

updated: 2026/04/15 created: 2026/04/15

はじめに

sedはテキスト処理を効率化するコマンドとして、日々の開発や運用で広く使われています。特に行単位での削除はログ整形やデータ前処理で頻繁に登場しますが、初学者にとっては書き方や挙動が分かりづらいことも多いです。

この記事では、シンプルな例をもとにsedで行を削除する方法を丁寧に解説し、つまずきやすいポイントもあわせて紹介します。

参考: FreeBSD Manual Pages - sed

sedで特定の行を削除するコマンドの仕組み

今回使用するコマンドは以下です。

sed '2d' input.txt

このコマンドは「2行目を削除する」という意味です。sedでは「行番号 + d」で指定した行を削除できます。

要素意味
2対象となる行番号
ddelete(削除)命令

つまり、2行目だけが出力結果から除外されます。

実行前の状態

まずは対象となるファイルを作成します。

cat << 'EOF' > input.txt
hello
sed

# comment
command
world
EOF

input.txtの内容は以下です。

hello
sed

# comment
command
world

実行後の状態

コマンドを実行します。

sed '2d' input.txt

出力結果は以下です。

hello

# comment
command
world

input.txtの2行目にあった「sed」が削除されています。

実行画像

GNU sedとBSD sedの挙動の違い

macOSなどで使われるBSD sedとLinuxで一般的なGNU sedにはいくつか違いがあります。特に注意したいのはインプレース編集です。

項目BSD sedGNU sed
-iオプション拡張子必須拡張子不要
-i ''-i

BSD sedではバックアップ拡張子を空文字で指定する必要があります。

複数行の削除

複数の行を削除する場合は範囲指定を使います。

sed '2,3d' input.txt
記述意味
2,32行目から3行目まで
d指定範囲を削除

これにより2行目と3行目がまとめて削除されます。

検索パターンで行の削除

特定の文字列を含む行を削除する方法です。

sed '/world/d' input.txt
記述意味
/world/worldを含む行
d該当行を削除

検索パターン以外の行を削除

特定の行だけを残したい場合です。

sed '/world/!d' input.txt
記述意味
/world/worldを含む行
!条件の否定
dそれ以外を削除

コメント行の削除

コメント行(#で始まる行)を削除するには以下を使います。

sed '/^#/d' input.txt
記述意味
^#行頭が#
d該当行を削除

空行の削除

空行を削除する方法です。

sed '/^$/d' input.txt
記述意味
^$空の行
d該当行を削除

ファイルへの書き込み

実際にファイルを書き換える場合は以下を使います。

sed -i '' '2d' input.txt
記述意味
-i ''直接ファイルを編集(BSD形式)
2d2行目を削除

逆引き

よくあるケースを紹介します。

例1: 3行目を削除

cat << 'EOF' > sample.txt
a
b
c
d
EOF
sed '3d' sample.txt

例2: errorを含む行を削除

cat << 'EOF' > sample.txt
ok
error
ok
EOF
sed '/error/d' sample.txt

例3: 空行だけ削除

cat << 'EOF' > sample.txt
a

b
EOF
sed '/^$/d' sample.txt

オプション指定ミスによるエラー

sedのオプションを誤ると意図しない結果になります。

例:

sed -i '2d' input.txt

BSD sedではエラーになります。

正規表現の誤りによる削除ミス

例えば以下のようなケースです。

sed '/./d' input.txt

空行以外のすべての行が削除されてしまいます。ドットは任意の1文字を意味するためです。

範囲指定の誤解による想定外の削除

sed '2,$d' input.txt

2行目以降すべて削除されます。$は最終行を意味します。

sedで行を削除するポイント整理

sedはシンプルながら非常に強力なコマンドです。行番号で削除する方法、検索パターンで削除する方法を使い分けることで、さまざまなテキスト処理に対応できます。

特に初学者は以下を意識すると理解が深まります。

  • 行番号指定とパターン指定の違いを理解する
  • BSD sedとGNU sedの違いに注意する
  • 実際にファイルを作って試す

これらを意識しながら練習すると、sedの操作に自信が持てるようになります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

©︎ 2025-2026 running terminal commands