【发布时间】:2012-06-26 14:24:02
【问题描述】:
awk 'BEGIN
{
INPUTFILE ='XXX'; iterator =0;
requestIterator =0;
storageFlag =T;
printFlag =F;
currentIteration =F;
recordCount =1;
while (getline < "'"$INPUTFILE"'")
{
requestArray[requestIterator]++;
requestIterator++;
}
}
if ($1 ~ /RequestId/)
{
FS = "=";
if($2 in requestArray)
{
storage[iterator] =$0;
printFlag =T;
next
}
else
{
storageFlag =F;
next
}
}
else
{
if((storageFlag =='T' && $0 != "EOE"))
{
storage[iterator]=$0; iterator++;
}
else {if(storageFlag == 'F')
{
next
}
else
{
if(printFlag == 'T')
{
for(details in storage)
{
print storage[details] >> FILE1;
delete storage[details];
}
printFlag =F;
storageFlag =T;
next
}
}'
我在上面的代码中遇到了一些语法错误。请大家帮帮我好吗?
awk: BEGIN{INPUTFILE =XXXX;iterator =0;requestIterator =0;storageFlag =T;printFlag =F;currentIteration =F;recordCount =1;while (getline > XXXX;删除存储[详细];}printFlag = F;storageFlag =T;下一个}}}}
awk: ^ 语法错误
awk: ^ 语法错误
【问题讨论】:
-
您对变量
F和T的使用可能不像您预期的那样工作。使用 0 表示 false,使用 1 表示 true,或者在BEGIN块中明确定义它们。另请注意,'T'与未引用的T完全不同(但'T'和"T"在awk中是等效的)。 -
同时更改
FSmid-script 的值可能不会达到您的预期。完成RequestId处理后,您需要将其重置为原始值。 -
您正在定义
INPUTFILE但从未使用它,而是用相同的名称插入一个 shell 变量(我猜这是未定义的)。如果你只使用一次,为什么你想要一个变量中的值呢?只需使用getline<"XXX"就可以了。 -
我已经清除了所有错误,我现在得到的唯一错误是语法错误..我不知道为什么
-
我应该使用这样的语句 if((storageFlag =='T' && $0 != "EOE"))
标签: awk