0

我正在尝试使用 bash 脚本来识别我的代码中在关闭后有多个空行的位置}

我可以使用此脚本搜索和查找文本:

TAGS="text"
find "${SRCROOT}" \( -name "*.h" -or -name "*.m" \) -print0 | xargs -0 egrep --with-filename --line-number --only-matching "\$match = 1 if s/($TAGS)/ error: \$1/; END { exit \$match; }" 

但我不确定如何搜索出现在结束}字符之后的空行。我需要某种正则表达式吗?

有人可以帮我把这些碎片拼在一起吗?

编辑

澄清一下,仅查找 } 后有多个空行的位置实际上非常有用。

4

1 回答 1

1

试试这个单行:

 awk '/}/{f=1;next} $0 && f{f=0;next} !$0 && f{print "empty line found:"NR}' file

举个例子:

kent$  nl -ba file
     1  foo
     2  bar}
     3  
     4  foo2
     5  
     6  
     7  bar2{
     8  
     9  }
    10  
    11  
    12  
    13  eof

kent$  awk '/}/{f=1;next} $0 && f{f=0;next} !$0 && f{print "empty line found:"NR}' file
empty line found:3
empty line found:10
empty line found:11
empty line found:12

编辑

新更新的问题又脏又快:

     awk '/}/{f=1;m=0;next} $0 && f{f=0;m=0;next} !$0 && f &&!m{m=1;next} m{print "empty line found:"NR}' file

新测试:

kent$  nl -ba file                                                                                              
     1  foo
     2  bar}
     3  
     4  foo2
     5  
     6  
     7  bar2{
     8  
     9  }
    10  
    11  
    12  
    13  blah{}
    14  
    15  
    16  
    17  
    18  eof

kent$  awk '/}/{f=1;m=0;next} $0 && f{f=0;m=0;next} !$0 && f &&!m{m=1;next} m{print "empty line found:"NR}' file
empty line found:11
empty line found:12
empty line found:15
empty line found:16
empty line found:17
于 2013-03-09T20:26:00.713 回答