1

嗨,我在使用以下代码时遇到了麻烦:

#|/bin/tcsh
TOTALMOS=`grep -v "Last MO:" x.log | grep "Total: .* MOs" | grep "Total: .* MOs" | awk '{ print $2 }' | tr '\n' ' ' | awk '{ print $1 }'`
RADIONO=`grep -n "get radio no" x.log | cut -f1 -d:`
RADIONO2=`expr "$RADIONO" + 6`
RADIONO3=`expr "$RADIONO2" + "$TOTALMOS"`
SED=`sed -n ''$RADIONO2','$RADIONO3'p' x.log | awk '{ print $3 }' | tr '\n' '  '`
echo "$SED"

输出如下:

5 8 2 4 0 10 6 11 1 3 1 9  

请注意:脚本末尾有两个中断"...1 9__"

好吧,我真正想要的是对所有数字求和,不包括它们来自的最后休息时间。我的第一个想法是用“+”替换换行符,然后让它与 expr 一起工作,但它根本不起作用......

请问有什么建议吗?

提前致谢!

此致。

4

1 回答 1

1

awk 来救援

$ echo "1 2 3 4 5 6 7    " | awk -vRS=" " '{sum+=$0} END{print sum}'
28
$ echo "1 2 3 4 5 6 7    " | awk '{for(i=1;i<=NF;i++) sum+=i; print sum}'                    
28

如果这就是“脚本末尾的两个中断”的意思,那么这两个脚本都将忽略尾随空格的数字相加。

于 2015-08-25T02:21:02.890 回答