多行正则表达式仅匹配文件的开头

时间:2015-04-02 16:21:27

标签: regex

如何仅在文件开头匹配模式?在我的特定用例中,我有一个脚本,标题中有一堆注释,正文中有可能的注释,我只想删除标题注释。

# blah blah
# More blah
# Hello World
Actual stuff
# commented out stuff
More stuff

应该映射到

Actual stuff
# commented out stuff
More stuff

我试过的正则表达式是/^#.*$//mg,但这也与正文中的评论相符。如何将其限制为仅标题中的注释?另外,我不想在文件的头部留下空白行。

2 个答案:

答案 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参数,不再自动打印这些行。