![sedで改行を置換・削除する sedで改行を置換・削除する](/images/e/1/1/5/6/e1156addfaa25ffe49160959e9d65c7aec903116-20160709185916000000.jpeg)
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'