【问题标题】:Run a remote awk command using ssh使用 ssh 运行远程 awk 命令
【发布时间】:2013-11-16 10:08:48
【问题描述】:

我尝试使用 ssh 运行远程 awk 语句。我的代码是:

ssh username@hostIP "awk 'NR==1  {max=0;min=1} NR>1 {if (max<\$3) max=\$3}END {print max}' FS=\",\" /path_to_my_file"

当我运行这个命令时,我没有收到任何错误消息,但是命令不起作用并且不产生输出,只是挂起,所以我需要通过 ctrl+c 取消它。

我有什么遗漏吗?

【问题讨论】:

  • FS=awk 命令之后在那里做什么?也许你打算改用awk -v FS=, '...'
  • janos 是对的,我认为 FS 之后的双引号会混淆 ssh,而我使用 \ 来逃避它们,但它看起来不起作用。格式如 ssh username@hostIP "awk -v FS=, 'NR==1 {max=0;min=1} NR>1 {if (max

标签: bash shell ssh awk


【解决方案1】:

使用 here-doc 试试这个:

ssh -t username@hostIP <<'EOF'
awk '
    NR==1 {max=0;min=1}
    NR>1 {if (max<$3) max=3}
    END {print max}
' FS="," /path_to_my_file
EOF

EOF 周围的单引号可防止 shell 扩展。

【讨论】:

  • 我收到伪终端将不会被分配,因为标准输入不是终端错误信息。
  • 我认为只是一个警告。
  • 它与 -t -t 选项一起使用。只是为了强制分配伪 tty,即使 stdin 不是终端。
  • @StardustOne 我在这里遇到了类似的问题stackoverflow.com/questions/31007951/…
  • 谢谢。我一直在为此苦苦挣扎。
猜你喜欢
  • 1970-01-01
  • 2018-03-03
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多