sedでファイルの最終行が空行だった場合のみ、その行を削除する
Pocket

ふと気になったので調べてみた。
どうやら、以下のようにsedを実行すればいけるようだ。

sed '${/^$/d;}' ファイルPATH
blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test123

1111
222


3333

33333

blacknon@BS-PUB-UBUNTU-01:~$ cat -ET /tmp/test123
$
1111$
222$
$
$
3333$
$
33333$
$
blacknon@BS-PUB-UBUNTU-01:~$ sed '${/^$/d;}' /tmp/test123

1111
222


3333

33333
Sponsored Links

空行でない場合は削除されないことも確認できている。

blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test456
1111
2222


33333


55555
blacknon@BS-PUB-UBUNTU-01:~$ sed '${/^$/d;}' /tmp/test456
1111
2222


33333


55555

sedって、こんな指定の仕方もできるのだなぁ…
どっかで見たことあったのかもしれないけど、あまり理解が及んでいなかったようだ。

その他、以下のようにコマンドを実行して対応することもできるようだ。

sed -z 's/\n$//' ファイルPATH
[centos@test-centos7 ~]$ cat /tmp/test123.txt
1111

2222
3333

4444
5555

[centos@test-centos7 ~]$ sed -z 's/\n$//' /tmp/test123.txt
1111

2222
3333

4444
5555

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

This article has 1 comments

  1. Pingback: Linux パターン別ファイルの空行削除(除外)方法 | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

メールアドレスが公開されることはありません。