在命令上使用AWK来接收其输出的一部分

时间:2014-05-08 12:14:58

标签: bash awk

我正在尝试使用awk来提取部分输出并将其分配给变量,但我无法使AWK正常工作。

这是我正在运行的命令:

nc -v -z 192.168.8.216 9100 | awk '{print $NF}

这是输出

Connection to 192.168.8.216 9100 port [tcp/*] succeeded!

我想要实现的是输出只是

succeeded

我只想要命令的最后一部分,以便我可以将它分配给变量并运行if语句。

2 个答案:

答案 0 :(得分:5)

该命令似乎是将输出发送到STDERR而不是STDOUT

STDERRSTDOUT合并:

nc -v -z 192.168.8.216 9100 2>&1 | awk '{print $NF}'

  

我只想要命令的最后一部分,以便我可以将它分配给   变量并运行if语句。

如果目的是简单地确定命令产生成功这个词,那么你不需要变量:

[[ $(nc -v -z 192.168.8.216 9100 2>&1) =~ succeeded ]] && echo "Yes"

如果您想匹配!并确保它位于行尾:

[[ $(nc -v -z 192.168.8.216 9100 2>&1) =~ succeeded\!$ ]] && echo "Yes"

答案 1 :(得分:0)

尝试使用退出状态:

nc -v -z 192.168.8.216 9100 && echo 'Yes' || echo 'No'