awk块中的分析错误 awk'开始 { INPUTFILE='XXX';迭代器=0; 请求迭代器=0; storageFlag=T; printFlag=F; 当前迭代=F; 记录计数=1; 而(getlineXXXX;删除存储[details];}printFlag=F;storageFlag=T;next}}}

awk块中的分析错误 awk'开始 { INPUTFILE='XXX';迭代器=0; 请求迭代器=0; storageFlag=T; printFlag=F; 当前迭代=F; 记录计数=1; 而(getlineXXXX;删除存储[details];}printFlag=F;storageFlag=T;next}}},awk,Awk,我在上面的代码中遇到了一些语法错误。你能帮我一下吗 awk:BEGIN{INPUTFILE=XXXX;iterator=0;requestIterator=0;storageFlag=T;printFlag=F;currentIteration=F;recordCount=1;while(getline>XXXX;删除存储[details];}printFlag=F;storageFlag=T;next}}} awk:^语法错误 awk:^语法错误引号是问题所在。INPUTFILE='XXX'上

我在上面的代码中遇到了一些语法错误。你能帮我一下吗

awk:BEGIN{INPUTFILE=XXXX;iterator=0;requestIterator=0;storageFlag=T;printFlag=F;currentIteration=F;recordCount=1;while(getline<“”){requestArray[requestIterator]++;requestIterator++;}if($1~/RequestId/){FS=“=”;if($2在requestArray中){storage[iterator]=0;printFlag=T;next}否则{storageFlag=F;next}((storageFlag==T&&$0!=EOE){storage[iterator]=$0;iterator++;}else{if(storageFlag==F){next}else{if(printFlag==T){for(存储中的详细信息){print storage[details]>>XXXX;删除存储[details];}printFlag=F;storageFlag=T;next}}}

awk:^语法错误


awk:^语法错误

引号是问题所在。
INPUTFILE='XXX'
上的第一个单引号将被解析为与开始之前的单引号匹配,从那时起,所有解析都将中断

要么转义引号,要么将awk文件放入单独的文件中,而不是“内联”

必须重写以删除外部对中的所有单引号

# STARTING POINT - known bad
awk 'BEGIN { INPUTFILE ='XXX'; iterator =0; ... '
或者,根据您是否需要双打或单打,在外面使用双打,在里面使用单打

 awk 'BEGIN { INPUTFILE ="XXX"; iterator =0; ... '
或者避开单曲的引用,这样他们就可以通过awk,而不会被shell消耗掉

awk "BEGIN { INPUTFILE ='XXX'; iterator =0; ... '

如果您将awk脚本放入一个单独的文件中,而不是将其内联到shell中,那么您的所有问题都会消失。您可以使用任何您喜欢的引号,没有人会在意!!

引号是问题所在。
INPUTFILE='XXX'
上的第一个单引号将在开始之前被解析为匹配的引号,然后再解析所有PAR这根绳子断了

要么转义引号,要么将awk文件放入单独的文件中,而不是“内联”

必须重写以删除外部对中的所有单引号

# STARTING POINT - known bad
awk 'BEGIN { INPUTFILE ='XXX'; iterator =0; ... '
或者,根据您是否需要双打或单打,在外面使用双打,在里面使用单打

 awk 'BEGIN { INPUTFILE ="XXX"; iterator =0; ... '
或者避开单曲的引用,这样他们就可以通过awk,而不会被shell消耗掉

awk "BEGIN { INPUTFILE ='XXX'; iterator =0; ... '

如果您将awk脚本放在一个单独的文件中,而不是将其内联到shell中,那么您的所有问题都会消失。您可以使用任何您喜欢的引号,没有人会在意!!

感谢您的回复。如果我将双引号而不是单引号,或者如果我甚至不将引号放在其中,您的awk脚本中有单引号和双引号,所以您使用的任何引号都可以将是“错误的”除非你逃避它们。我将用更多的信息编辑我的答案…快速浏览一下,似乎你可以在整个脚本中用双引号替换单引号。我已经清除了这个错误,现在我得到了一个语法错误,我已经通过编辑问题条来缩小错误范围。对我来说is bit看起来有点奇怪:if($1~/RequestId/)->应该是=~(我现在更习惯perl而不是awk…)谢谢你的回答。如果我用双引号而不是单引号,或者如果我甚至不加引号,你的awk脚本中有单引号和双引号,那么你使用的任何引号都是“错误”的除非你逃避它们。我将用更多的信息编辑我的答案…快速浏览一下,似乎你可以在整个脚本中用双引号替换单引号。我已经清除了这个错误,现在我得到了一个语法错误,我已经通过编辑问题条来缩小错误范围。对我来说位看起来很奇怪:if($1~/RequestId/)->应该是=~(我现在更习惯perl而不是awk…)您对变量
F
T
的使用可能与预期不符。请使用0表示false,1表示true,或者在
BEGIN
块中明确定义它们。另外请注意
'T'
与未引用的
T
完全不同(但是
'T'
'T'
awk
中等效)。此外,更改
FS
mid脚本的值可能不会达到预期效果。在完成
RequestId
处理后,需要将其重置为原始值。您正在定义
INPUTFILE
,但从未使用它,并使用sa插入shell变量