0
美好的一天!Awk輸入變量通常爲
我有下面的代碼:
BLOCK=`awk '
/\/\* R \*\// {
level=1
count=0
}
level {
n = split($0, c, "");
for (i = 1; i <= n; i++)
{
printf(c[i]);
if (c[i] == ";")
{
if(level==1)
{
level = 0;
if (count != 0)
printf("\n");
};
}
else if (c[i] == "{")
{
level++;
count++;
}
else if (c[i] == "}")
{
level--;
count++;
}
}
printf("\n")
}' $i`
該代碼切割件的文件從/* R */
馬克到「;」象徵着考慮到諸如大括號等細節,但這並不重要。我想用變量代替硬編碼的/ * R * /:
RECORDSEQ="/* R */"
...
BLOCK=`awk -v rec="$RECORDSEQ" '
rec {
level=1
count=0
}
但是這並不奏效。
我該如何解決?
預先感謝您。
也許'$ 0〜rec {...}' – 2014-10-30 22:37:19
但它已經使用$ 0,因爲它從文件讀取:'}} printf(「\ n」)}'i' – 2014-10-30 22:41:41
Mark是對的。要獲得動態正則表達式(從字符串中讀取正則表達式)才能正常工作,需要明確使用正則表達式運算符。 – ooga 2014-10-30 22:48:09