sedで改行を置換・削除する
Pocket

sedでは、普通に「\n」を指定しただけだと改行の削除や置換を行うことができない。

20160709_185916000000

blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test1.txt
1.aaa
2.bbb
3.ccc
4.ddd
blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test1.txt | sed 's/\n//g'
1.aaa
2.bbb
3.ccc
4.ddd
Sponsored Links

じゃ、どうしたら改行を置換できるのか。
GNU版のsedであれば、以下のようにすればいい。

sed ':a;N;$!ba;s/\n/ /g'
sed -z 's/\n/ /g'

20160709_190509000000

blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test1.txt
1.aaa
2.bbb
3.ccc
4.ddd
blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test1.txt | sed 's/\n//g'
1.aaa
2.bbb
3.ccc
4.ddd
blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test1.txt | sed ':a;N;$!ba;s/\n/ /g'
1.aaa 2.bbb 3.ccc 4.ddd
blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test1.txt | sed -z 's/\n/ /g'
1.aaa 2.bbb 3.ccc 4.ddd

 

GNU版でない場合(Macとか)、以下のようにすればよい。

sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g'

 

Pocket

Written by blacknon

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

Leave a Comment

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