Swe*_*ety 4 regex shell awk sed
我想从所有文件中删除标题,标题的行以//.
如果我想删除所有以 开头的行//,我可以执行以下操作:
sed '/^\/\//d'
Run Code Online (Sandbox Code Playgroud)
但是,这不是我需要做的事情。我只需要删除文件开头的行//。
示例文件:
// This is the header
// This should be deleted
print "Hi"
// This should not be deleted
print "Hello"
Run Code Online (Sandbox Code Playgroud)
预期输出:
print "Hi"
// This should not be deleted
print "Hello"
Run Code Online (Sandbox Code Playgroud)
更新:如果在开头或中间有新行,则不起作用。有没有办法处理这种情况?
示例文件:
< new empty line >
// This is the header
< new empty line >
// This should be deleted
print "Hi"
// This should not be deleted
print "Hello"
Run Code Online (Sandbox Code Playgroud)
预期输出:
print "Hi"
// This should not be deleted
print "Hello"
Run Code Online (Sandbox Code Playgroud)
有人可以建议一种方法吗?提前致谢!
更新:接受的答案适用white space于开始或中间。
你能不能试试以下。这也处理了新的线路场景,在https://ideone.com/IKN3QR 中编写和测试
awk '
(NF == 0 || /^[[:blank:]]*\/\//) && !found{
next
}
NF{
found=1
}
1
' Input_file
Run Code Online (Sandbox Code Playgroud)
解释:如果一行是空的或者从//AND 变量开始为 NULL 则简单地检查条件,然后简单地跳过这些行。一旦没有//找到任何行,然后在此处设置变量,因此所有接下来的行都应该从设置为的行打印,直到打印 Input_file 的结尾。