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 に答える