我正在尝试使用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; }"
但是我不确定如何搜索关闭}
字符后出现的空行。我需要某种正则表达式吗?
有人可以帮我把这些碎片装在一起吗?
修改
为了澄清,实际上只有在找到}之后有多个空行的位置才真正有用。
答案 0 :(得分: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