ファイルの最後の行を削除する

エディタで開けない巨大なファイルの最後の行を削除したかった。

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