lsf awk命令引号

时间:2012-10-19 17:35:19

标签: awk lsf

当我在bash终端中运行此命令时,它可以工作:

awk '{ sum += $1 } END { print sum }' /user/dnaiel/test.txt > /user/dnaiel/sum.txt

但是当我跑这个时:

bsub -q priority -R'rusage[mem=2000]' -oo bin${count}.out -eo bin${count}.err \
"awk '{ sum += $1 } END { print sum }' /user/dnaiel/test.txt > /user/dnaiel/sum.txt"

它不起作用。我也试过改变'到了但也行不通。

我收到以下错误: 对于第一种情况:

awk: { sum +=  } END { print sum }
awk:           ^ syntax error

对于我使用\'

的情况
awk: '{
awk: ^ invalid char ''' in expression

我在弄乱语法的任何想法?我很困惑。

由于

1 个答案:

答案 0 :(得分:1)

注意错误消息中$1是如何消失的?

awk: { sum +=  } END { print sum }
awk:           ^ syntax error

这是因为在shell中,当你用dbl-quotes引用第一个东西时,正如你所做的那样

bsub -q priority -R'rusage[mem=2000]' -oo bin${count}.out -eo bin${count}.err \
"awk '{ sum += $1 } END { print sum }' /user/dnaiel/test.txt > /user/dnaiel/sum.txt"

任何$ {var}引用都会扩展为它们的值。当单引号在dbl引用的字符串中时,单引号已经失去了防止变量扩展的神奇力量。

如何修复,逃避$。不确定bsub是什么,但是应该这样做:

bsub -q priority -R'rusage[mem=2000]' -oo bin${count}.out -eo bin${count}.err \
"awk '{ sum += \$1 } END { print sum }' /user/dnaiel/test.txt > /user/dnaiel/sum.txt"
# -------------^^^

IHTH