Skip to content

Instantly share code, notes, and snippets.

@sahara-ooga
Last active May 21, 2020 05:32
Show Gist options
  • Save sahara-ooga/e636c4fec9b6f17b9285c65ec5b5e066 to your computer and use it in GitHub Desktop.
Save sahara-ooga/e636c4fec9b6f17b9285c65ec5b5e066 to your computer and use it in GitHub Desktop.
madOSのsedで複数行を範囲指定して消す場合

テキストファイルの特定の範囲の行を削除するとき、sedコマンドを使う時の諸注意。

Macの(BSD版)sed での上書き保存 - Qiitaが参照元。

sed '6,10d' foo.txtとした場合、結果は標準出力に出力されるので、リダイレクトする。

sed '6,10d' foo.txt > bar.txt

ところが、bar.txt は空のファイルになってしまう。

ではどうするか?

iオプションを指定する。このオプションは、バックアップファイルの拡張子を指定すると元の内容をそちらに保存してくれる。バックアップを取る必要がなく、直接上書きでよい場合は、空文字列を渡す。

直接上書きで良い場合

sed -i '' '6,10d' 523764.txt

バックアップを取る場合

sed -i '.bak' '6,10d' 523764.txt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment