首页 > 解决方案 > 如何编写 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

我将不胜感激任何指导或解决方案。谢谢,詹姆斯。

标签: unixsed

解决方案


试试下面的截图

< 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

希望这可以帮助 :)


推荐阅读