+ -
当前位置:首页 → 问答吧 → 求助正则过滤注释文本的问题

求助正则过滤注释文本的问题

时间:2011-06-17

来源:互联网

本帖最后由 siriut 于 2011-06-17 16:52 编辑

本人新手,想通过正则过滤掉文件中的注释行和空行,出现以下状况很是不理解

测试的文件是这样的
cat 1111.txt
#135123q
    #s234sdf2
        ##2sd222
123sdf23
  234sdf23
        2sd22

使用如下的正则表达式grep过滤,只把第一行以#开头的文本过滤掉了,但是#前面有空格或制表符的行就不生效
grep "^\s*[^#].*$" 1111.txt
    #s234sdf2
        ##2sd222
123sdf23
  234sdf23
        2sd22
                        
但是这样就可以(#后多了一个空格)
grep "^\s*[^# ].*$" 1111.txt   
        ##2sd222
123sdf23
  234sdf23
        2sd22

我看书上说,正则表达式是从头开始,每个字符与表达式进行匹配的,我实在不明白[]里这个空格是什么作用。还请大家不吝赐教。

还有就是grep里制表符怎么表示的,\t 好像不生效。。。

作者: siriut   发布时间: 2011-06-17

  1. $ grep -vP '\s*#' aa
  2. 123sdf23
  3.   234sdf23
  4.         2sd22
复制代码

作者: justlooks   发布时间: 2011-06-17

回复 justlooks


    谢谢你,不过我是想知道有没有那个空格作用差在哪。。。

作者: siriut   发布时间: 2011-06-17