【发布时间】:2014-04-04 18:03:25
【问题描述】:
这是我的脚本:
for i in *.locs
do
awk -v start=$(head -n 1 ${i}) -v end=$(tail -n 1 ${i})
BEGIN {
sum = 0;
count = 0;
range_start = -1;
range_end = -1;
}
{
irow = int($1)
ival = $2 + 0.0
if (irow >= start && end >= irow) {
if (range_start == -1) {
range_start = NR;
}
sum = sum + ival;
count++;
}
else if (irow > end) {
if (range_end == -1) {
range_end = NR - 1;
}
}
}
END {
echo "${i}"
print "start =", range_start, "end =", range_end, "mean =", sum / count
}
done
这给了我这个错误:
第 15 行:意外标记 `}' 附近的语法错误
第 15 行:`}'
但是当我第一次使用 awk 生成变量 start 和 end 后跟 -f myscript.sh 文件时
我没有收到错误:
我错过了什么?
提前致谢
【问题讨论】:
-
你上一个问题的cyon replied 是一个
awk脚本,例如,你必须单独存储为script.awk,并使用awk ... -f script.awk调用。 -
但是因为我有这么多文件并且想在打印结果之前添加那个 echo "${i}" 这样我就可以知道每个文件的结果
-
awk不是shell。echo "${i}"是shell命令。你不能从awk调用echo,就像你不能从C调用它一样,等等。不清楚你要做什么,这可能意味着你的方法是错误的——如果你告诉我们你'正在尝试做并发布一些小样本输入和预期输出,我们可以提供帮助。 -
感谢 Ed Morton。这是以前的帖子,我得到了这个脚本 (stackoverflow.com/questions/22145261/…),所以你可以看到我的问题。