linux - 如何从数据行中删除换行符

标签 linux shell unix

我有一个如下文件

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 - 分支到脚本开头(以加入更多行)

关于linux - 如何从数据行中删除换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58939971/

相关文章:

python - 如何在 Mac OS X 和 Linux 上加载 Cython 编译的 .so 文件?

linux - 如何在 bash 中首先使用长可选或非可选参数以任意随机顺序使用 getopts?

linux - CURL:抓取 Liveleak 视频

安装了Python3.6但版本显示为3.5.2

perl - Shell脚本中字符的小写到大写

git - 如何使用 git 存储库使文件夹保持最新?

unix - 如何生成 Unix 时间戳?

linux - 执行二进制文件

python - UNIX 数据报套接字返回数据给发送者

linux - 记录线程事件