ファイルの最後の行を削除する
エディタで開けない巨大なファイルの最後の行を削除したかった。
sedを使えば素早く出来る
1. 出力
sed -e '$d' <textファイル名>
こうすると最後の行が削除されたテキストが標準出力に出力される。 ファイルの内容に変更はない。
実行例
$ cat bigtext.txt abc def 012 345 678 last line $ sed -e '$d' bigtext.txt abc def 012 345 678 $ cat bigtext.txt abc def 012 345 678 last line
ただし、今回は巨大なファイルが対象なので、標準出力に出力されると困る。
2. 元のファイルに上書き
sed -i -e '$d' <textファイル名>
こうすると最後の行が削除された内容が元のファイルに上書きされる。
実行例
$ cat bigtext.txt abc def 012 345 678 last line $ sed -i -e '$d' bigtext.txt $ cat bigtext.txt abc def 012 345 678
3. 別ファイルに保存
sed -i<接尾辞> '$d' <textファイル名>
とすると、削除する前の内容が`<textファイル名><接尾辞>`というファイル名でバックアップが作られる。
実行例
$ cat bigtext.txt abc def 012 345 678 last line $ sed -i.bk '$d' bigtext.txt $ ls big* bigtext.txt bigtext.txt.bk $ cat bigtext.txt abc def 012 345 678 $ cat bigtext.txt.bk abc def 012 345 678 last line