【问题标题】:qsub doesn't recognize awk field variablesqsub 无法识别 awk 字段变量
【发布时间】:2021-06-01 13:18:48
【问题描述】:

考虑使用这个 awk 脚本来打印每行的第 2 列: awk '{print $2}' a.txt。 $2 不是 shell 变量,但是当我尝试将此代码提交给 qsub 时,$2 被解释为这样。即

qsub awk '{print $2}' a.txt

导致 qsub 执行命令

awk '{print }' a.txt

明确地说,我不是试图在 awk 脚本中使用 shell 变量;因此How do I use shell variables in an awk script? 不适用。

我尝试了Using awk with qsub and issues with quotations 中的建议,包括\$2

qsub -- awk '{print $2}' a.txt.

都不行。

我当然可以将 awk 放入脚本中并以这种方式调用 qsub,即 qsub awkscript.sh。但是,如果有办法从命令行使用 qsub+awk,我想学习一下。

【问题讨论】:

  • 我从未听说过qsub,但你可以试试qsub "awk '{print \$2}' a.txt"qsub 'awk \"{print \$2}\" a.txt'。您可能需要在 $2 前面添加或删除反斜杠。
  • 感谢您的提问。不幸的是,这些都不起作用。
  • 我无言以对,我从没听说过qsub,但对于@EdMorton——现在我知道我们陷入了困境。所以qsub(我有手册页)是提交脚本以供批处理服务器进行后台处理的用户实用程序。使用 Linux 21 年,不知怎的,没有它我也相处得很好:)
  • 它专门针对高性能计算批处理环境,但在这些环境中非常普遍。

标签: awk qsub


【解决方案1】:

做一个双层引用的工作,比如

qsub 'awk '\''{ print $2 }'\'' a.txt '

【讨论】:

  • 这行得通,稍作改动($ 前的反斜杠):qsub 'awk '\''{ print \$2 }'\'' a.txt '
  • 啊谢谢。我什至从未听说过 qsub,所以我只是在猜测解决方案
【解决方案2】:

下面的 RARE Kpop Manifesto 是 99% 正确的。加上反斜杠,整个表达式就像魔术一样工作:)

qsub 'awk '\''{ print \$2 }'\'' a.txt '

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-27
    • 2013-05-15
    • 2014-06-10
    • 2017-01-04
    • 2013-08-13
    • 2018-11-12
    • 2013-02-18
    • 1970-01-01
    相关资源
    最近更新 更多