我想在C源文件集合中搜索簡單的if
語句。如何在C源代碼中搜索簡單的if語句?
這些形式的語句:
if (condition)
statement;
可能出現在if
之前在同一行的空格或其他序列(例如,「}其他」)的任何量。評論可能出現在「if(條件)」和「聲明」之間。
我要排除的形式的複合語句:
if (condition)
{
statement;
statement;
}
我試圖在每個AWK如下:
awk '/if \(.*\)[^{]+;/ {print NR $0}' file.c # (A) No results
awk '/if \(.*\)[^{]+/ {print NR $0}' file.c # (B)
awk '/if \(.*\)/ {print NR $0}' file.c # (C)
(B)和(C)得到不同的結果。兩者都包括我正在查找的項目和我想排除的項目。顯然,問題的一部分是如何處理跨越多行的模式。
可以忽略邊緣情況(格式不正確的註釋,奇數縮進或奇怪位置的大括號等)。
我該如何做到這一點?
(A)和(B)是相同的 – DrAl 2009-07-03 10:56:26
哎呀,如果我r (B)應該沒有分號。我將編輯該問題以反映這一點。 – 2009-07-03 13:13:39