linux - 如何从数据行中删除换行符
问题描述
我有一个文件如下
Emp1|FirstName|MiddleName|LastName|Address|Pincode|PhoneNumber
1234|FirstName1|MiddleName2|LastName3| Add1 || ADD2|123|000000000
2345|FirstName2|MiddleName3|LastName4|
Add1 || ADD2|
234|000000000
输出 :
Emp1|FirstName|MiddleName|LastName|Address|Pincode|PhoneNumber
1234|FirstName1|MiddleName2|LastName3| Add1 || ADD2|123|000000000
2345|FirstName2|MiddleName3|LastName4| Add1 || ADD2|234|000000000
解决方案
这里的问题不是如何删除换行符,而是何时删除它们。幸运的是,需要与下一行连接的行可以由尾随|
. 一个合适的sed
命令是:
sed ':0;/|$/{N;s/\n//;b0}'
:0
- 脚本开头的标签/|$/
- 地址行以|
N
- 追加下一行输入s/\n//
- 删除嵌入的换行符b0
- 分支到脚本的开头(加入更多行)