正则表达式以排除注释

时间:2013-04-24 15:10:12

标签: replace unix

我正在尝试使用grep -v -e''从文件中排除注释(带有#作为第一个非空白字符的行)。 #可以出现在行的开头,或者在遇到第一个#之前,可能会有任意组合的几个空格和制表符。

假设文件np4包含:

# hash at the begining of the line
## two hashes at the begining of the line
#### four hashes at the begining of the line
  # two white spaces then a hash
a good line
    another good line starting with a few spaces
                         a good line starting with a combination of spaces and tabs
                # two white spaces, two tabes and then a hash
                  ## two tabs, two white spaces and then two hashes
            # tab, ws, tab, ws, tab then hash

我尝试使用下面的命令,但它不能像我想象的那样工作。我应该只输出三行作为输出。

grep -v -e'^ \ s *#。* $'np4

2 个答案:

答案 0 :(得分:0)

我相信你缺少的是与一个或多个英镑符号相匹配的加号。我没有像我测试的那样grep,但这看起来不错。我已经为我的测试提供了永久链接。

^ \ S *#+。* $

Here is a permalink to the test on regexpal.com.

答案 1 :(得分:0)

不确定\ s是否适用于grep。 你能试试“^ [] #。”? 在[]中有一个空格和一个制表符,两个字符。