首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除每个注释块的所有注释行(最后一个注释行除外)

问删除每个注释块的所有注释行(最后一个注释行除外)
EN

Unix & Linux用户
提问于 2020-11-24 16:54:04
回答 1查看 320关注 0票数 3
  • 目标:删除每个注释块的所有注释行(最后一个注释行)。如果文件以注释块结尾,则完全删除它。每个注释行都以一个#开头。
  • 命令,我尝试了sed -z -e 's/#.*\n#/#/g‘"${InputP}“
  • 输入文件# Life/Living #Life/激情- Mindfulness.md # Life/PersonalManagement # Life/Social # Linux/AmazingNotes # Linux/Backintime # Linux/DotFiles # Linux/GitScripts Peaceful.m3u - AuxiliaryFiles.sh #PythonWs/数字编程#PythonWs/科学计算计算
  • 预期输出#生命/激情- Mindfulness.md #Linux/Life Peaceful.m3u - AuxiliaryFiles.sh
  • 但是我得到了这个输出#PythonW/科学计算

有人知道如何解决这个问题吗?

EN

回答 1

Unix & Linux用户

发布于 2020-11-24 17:15:07

问题是.*很贪婪,所以sed -z -e 's/#.*\n#/#/g'将从包含#的第一行到以#开头的最后一行进行匹配。这只是因为-z标志,它同时在模式空间(假定文本文件中没有空字节)中删除整个文件。

解决问题的Sed脚本是

代码语言:javascript
复制
sed -n '/^#/N;/\n#/D;p' file
  • /^#/N如果该行以#开头,则将下一行追加到模式空间。
  • /\n#/D如果模式空间包含一个换行符,然后是#,则删除所有到换行符的所有内容,并启动一个新的循环。
  • 如果到达此命令,p将打印模式空间。

有用链接

票数 9
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/621341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档