我是生物信息学家,但我来自生物学。我还在学习初级水平。但是现在我在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,并且无法弄清楚导致此错误的原因。
答案 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)