如何仅在文件开头匹配模式?在我的特定用例中,我有一个脚本,标题中有一堆注释,正文中有可能的注释,我只想删除标题注释。
# blah blah
# More blah
# Hello World
Actual stuff
# commented out stuff
More stuff
应该映射到
Actual stuff
# commented out stuff
More stuff
我试过的正则表达式是/^#.*$//mg
,但这也与正文中的评论相符。如何将其限制为仅标题中的注释?另外,我不想在文件的头部留下空白行。
答案 0 :(得分:1)
你可以使用这个awk:
awk '/^[^#]/{body=1} body' file
Actual stuff
# commented out stuff
More stuff
答案 1 :(得分:1)
使用sed:
sed -n '1{:a;/^#/n;/^#/ba};p' file.txt
细节:
1 # if the line number is 1
{ # do
:a; # define the label a
/^#/n; # when the line begins with # load the next line in pattern space
/^#/ba # if the "new" line begins with # go to label a
};
p # print the line
使用n
参数,不再自动打印这些行。