Bash 如何删除以相同字符开头的行?

Bash 如何删除以相同字符开头的行?,bash,Bash,我试图通过删除没有内容的标题来清理其他人脚本的输出 输出当前如下所示: ====== Header1 ====== ====== Header2 ====== ====== Header3 ====== information 我正在尝试删除Header1和Header2的行,但没有删除Header3。我发现了一个awk命令,该命令删除了所有重复的行,但最后一行以相同字符开头,因此这有助于解决此问题,但当“信息”位为多行且以相同字符开头(通常为制表符)时,会导致新问题 清理后所需的输出: ==

我试图通过删除没有内容的标题来清理其他人脚本的输出

输出当前如下所示:

====== Header1 ======
====== Header2 ======
====== Header3 ======
information
我正在尝试删除Header1和Header2的行,但没有删除Header3。我发现了一个awk命令,该命令删除了所有重复的行,但最后一行以相同字符开头,因此这有助于解决此问题,但当“信息”位为多行且以相同字符开头(通常为制表符)时,会导致新问题

清理后所需的输出:

====== Header3 ======
information

谢谢

此awk可能适合您:

$ awk '/^===/{h=$0;p=0;next}!p{print h};{p=1}1' file
====== Header3 ======
information
或者正如格伦所指出的,这同样有效:

awk '/^===/{h=$0;next}h{print h;h=0}1' file

目前形式的问题似乎微不足道。考虑提供一些实际数据,我不确定你的意思。“Headers”都是唯一的组件名称,并且信息是一条git提交消息,我想为这个概念保留+1。您不需要2个变量:
/^===/{h=$0;next}h{print h;h=”“}1'
@glennjackman您是对的。我猜头的结构保证了
h
变量在记录中不会有空值。额外的增强:即使后面有空行也跳过头:
/^===/{h=$0;next}h&$1{next}h{print h;h=”“}1'