sed - 从文件中删除换行符不起作用
问题描述
我尝试使用 sed 从包含模式的行中删除换行符。我的台词是:
Format: 0000000
InputMask: &&&&&&&
OrdinalPosition: 0
Required: True
SourceField: LOAN-NO
SourceTable: MASTER
我希望它看起来像这样:
Format: 0000000
InputMask: &&&&&&&
OrdinalPosition: 0
Required: True
SourceField: LOAN-NO:SourceTable: MASTER
我的代码是:
cat file.txt | sed 's/\(*.SourceField.*\)\(\n\)/\1:/g'
代码不会改变任何东西。事实上,即使我删除模式并寻找 \n 它仍然不起作用
这似乎适用于所有线路:
cat file.txt | sed ':a;N;$!ba;s/\n//g'
但我不能让它只适用于包含 SourceField 的行。
我想了解为什么第一行不起作用,以及如何调整第二行以仅与包含该模式的行一起使用。
任何帮助,将不胜感激。
谢谢!
解决方案
$ sed -E '/SourceField:/{N;s/\n */:/;}' file
Format: 0000000
InputMask: &&&&&&&
OrdinalPosition: 0
Required: True
SourceField: LOAN-NO:SourceTable: MASTER
您的第一个脚本将不起作用,因为sed
操作是基于行的。在模式空间中,您可以删除新行。
推荐阅读
- android - 使用存储在 persistentcookiejar 或其他容器中的 Cookie 来处理 android 中的 okhttp 请求
- debugging - 在 Testcafe 中开发测试时保持浏览器打开
- reactjs - VSCode 自动导入 React 内置钩子,如 useState、useEffect
- azure-devops - Azure DevOps 在创建分支时运行构建
- apache - 在 Apache .htaccess 中使用自定义重定向匹配重定向和 RewriteRule
- android - 以编程方式设置 LinearLayout 背景资源比例类型
- html - text-align:center + word-spacing 在 Safari 中不起作用
- javascript - 具有构建时变量的 JavaScript 应用程序管道的正确流程是什么?
- python - 如何使用循环从 CSV 中的列中提取值并使用 python 在电子邮件正文中使用它们?
- excel - vlookup 中的数据不可用错误:不知道该怎么做