ふと気になったので調べてみた。
どうやら、以下のように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
空行でない場合は削除されないことも確認できている。
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