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&lt;“”){requestArray [requestIterator] ++ ; requestIterator ++;}} if($ 1~ / RequestId /){FS =“=”; if(requestArray中为$ 2){storage [iterator] = $ 0; printFlag = T; next} else {storageFlag = F; next}} else {if((storageFlag == T&amp;&amp; $ 0!= EOE)){storage [iterator] = $ 0; iterator ++;} else {if(storageFlag == F){next} else {if(printFlag == T) {for(存储中的详细信息){print storage [details]&gt;&gt; XXXX;删除存储[详细信息];} printFlag = F; storageFlag = T; next}}}}
awk:^语法错误
awk:^语法错误
答案 0 :(得分:1)
行情是问题所在。 INPUTFILE ='XXX'
上的第一个单引号将被解析为与BEGIN之前的引号匹配,从那时起所有解析都被破坏。
要么转义引号,要么只将awk文件放入单独的文件而不是“内联”。
# STARTING POINT - known bad
awk 'BEGIN { INPUTFILE ='XXX'; iterator =0; ... '
必须重写以删除外部对中的所有单引号
awk 'BEGIN { INPUTFILE ="XXX"; iterator =0; ... '
或者,如果您需要双打或单打,请使用外部双打和内部单打
awk "BEGIN { INPUTFILE ='XXX'; iterator =0; ... '
或逃避单打引号,以便它们通过awk并且不会被shell消耗。
awk 'BEGIN { INPUTFILE =\'XXX\'; iterator =0; ... '
如果将awk脚本放入单独的文件而不是将其内联到shell中,那么所有问题都会消失。你可以拥有自己喜欢的任何报价,没人会关心!!