unix - 如何编写 sed 代码以删除关键字后的多行,直到到达下一个空行
问题描述
谁能告诉我如何编写可用于更新文本文件的 sed 脚本,如下所示:
每次遇到包含字符串 'Header_one' 的文件中的一行时: - 删除紧跟在 'Header_one' 行之后的行,直到遇到下一个空白行。- 但不要删除 'Header_one' 行本身
例如,一个包含以下内容的文件:
Header_one
dkrjng
djsje
Header_two
cklrgjsj
djrhg
Header_one
drgbyj
efgjjm
cddess
Header_three
sdfvgg
ddddfy
将改为:
Header_one
Header_two
cklrgjsj
djrhg
Header_one
Header_three
sdfvgg
ddddfy
我将不胜感激任何指导或解决方案。谢谢,詹姆斯。
解决方案
试试下面的截图
< InputFile sed -e '/Header_one/i Header_one' -e '/Header_one/,/s/d' > outputFile
这里的想法是替换2行之间的内容并用一个标题(即Header_one)替换它。第二-e
部分代码确实删除了Header_one和空格之间的数据;而第一-e
部分用新的 header 替换它Header_one
。
InputFile 和 OutputFiles 是简单的重定向。
您还可以查看:https ://askubuntu.com/questions/637003/delete-lines-between-2-strings
希望这可以帮助 :)
推荐阅读
- c# - 实时应用前端更改,而无需在 Visual Studio 上重新启动项目?
- python - 如何从 .py 文件映射字典
- php - 无法使用 sury.org 的 php5.6-http 在 Ubuntu 18.04 上实例化 http\Client
- wordpress - WP RestAPI 在本地但不在 cpanel 中接收数据
- vb.net - 如何在文件名的特定字符范围内搜索字符串?
- rust - mpsc 上的函数 recv 如何获取引用并返回所有权?
- sql - 使用 SQL 查询提取所需数据的安然数据集
- reactjs - Firebase:如何手动将 Google 登录身份验证器限制为特定的电子邮件地址?
- java - Springboot SOAP 消息
- neo4j - Cypher - 获取节点的所有关联关系