【发布时间】:2020-10-31 14:17:45
【问题描述】:
我想从所有文件中删除标头,标头有以//开头的行。
如果我想删除所有以// 开头的行,我可以这样做:
sed '/^\/\//d'
但是,这不是我需要做的事情。我只需要删除文件开头以// 开头的行。
示例文件:
// This is the header
// This should be deleted
print "Hi"
// This should not be deleted
print "Hello"
预期输出:
print "Hi"
// This should not be deleted
print "Hello"
更新: 如果开头或中间有新行,则不起作用。有没有办法处理这种情况?
示例文件:
< new empty line >
// This is the header
< new empty line >
// This should be deleted
print "Hi"
// This should not be deleted
print "Hello"
预期输出:
print "Hi"
// This should not be deleted
print "Hello"
有人可以建议一种方法吗?提前致谢!
更新:接受的答案在开头或中间对white space 效果很好。
【问题讨论】:
-
请在您的问题中添加示例输入(无描述、无图像、无链接)和该示例输入所需的输出(无评论)。
-
感谢您的建议,我已经更新了问题。
-
如果没有初始的cmets,是否应该删除文件开头的任何空行?
-
是的,可以在开头或标题之间有空行。这更像是一个一致性问题。某些情况下,可以有空格,然后在标题中
//。 -
基本上这就是你问
(?m)(?:^\s*//.*\s*){2}的原因,因为我不熟悉 sed 或 awk 的工作原理,所以我将它放在评论中,没有任何解释。但是,如果您尝试任何不能执行此确切功能的操作,它将无法正常工作。