有人可以帮助我解决这个awk语法错误

时间:2015-08-29 03:13:32

标签: awk

我是生物信息学家,但我来自生物学。我还在学习初级水平。但是现在我在awk中遇到了一个错误。文章显示了这个命令,我完全按照它执行的方式,但仍然。

this paper from Nature protocols中,在这样的awk中有一个命令用于"为每个程序集打印一个简单的表,列出每个程序集中有多少个成绩单与已知的成绩单完全匹配"。

$ for i in 'find . -name *.tmap'; do echo $i; awk 'NR  >  1 { s[$3] +  +  } END { \

for (j in s) { print j, s[j] }} ' $i; done;

然后,我收到一个错误:

find . -name *.tmap
awk: NR  >  1 { s[$3] +  +  } END {
awk:                        ^ syntax error

不幸的是,我不知道如何使用awk,并且无法弄清楚导致此错误的原因。

1 个答案:

答案 0 :(得分:6)

您的真实问题已在评论中得到解答(增加一个 -operator gawk不允许空格),但我建议通过以下方式提高性能:仅运行gawk一次(BEGINFILE需要gawk ' FNR>1 { s[$3]++ } ENDFILE { print FILENAME for (j in s) print j, s[j] delete s } ' $(find . -name '*.tmap') ):

xargs

产生新的PID相对昂贵。如果您有很多文件,可以使用prog.awk(假设您将awk prog存储为当前目录中的find . -name '*.tmap' -type f -print0 | \ xargs -0 --max-args=1000 gawk -f prog.awk ):

if (DateTime(CStr({@Date1})) = Datetime({rpcRGHL5DayBalanceView;1.1date})) 
then
    ToText(CStr({rpcRGHL5DayBalanceView;1.1}),0)
else
    ToText(999999999999.99)