テキストファイルの特定の範囲の行を削除するとき、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