sedでは、普通に「\n」を指定しただけだと改行の削除や置換を行うことができない。
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
じゃ、どうしたら改行を置換できるのか。
GNU版のsedであれば、以下のようにすればいい。
sed ':a;N;$!ba;s/\n/ /g'
sed -z 's/\n/ /g'
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'