首页 > 解决方案 > 如何从数据行中删除换行符

问题描述

我有一个文件如下

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

标签: linuxshellunix

解决方案


这里的问题不是如何删除换行符,而是何时删除它们。幸运的是,需要与下一行连接的行可以由尾随|. 一个合适的sed命令是:

sed ':0;/|$/{N;s/\n//;b0}'
  • :0- 脚本开头的标签
  • /|$/- 地址行以|
  • N- 追加下一行输入
  • s/\n//- 删除嵌入的换行符
  • b0- 分支到脚本的开头(加入更多行)

推荐阅读