如何从bash的nmcli输出中提取单个字段?

时间:2018-11-26 18:09:56

标签: bash shell

我想提取以下命令的结果以将其存储在变量中:

nmcli connection show

提取的结果应为ens18。相反,它大致如下:

NAME  UUID                                 TYPE           DEVICE
ens18 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 802-3-ethernet ens18

...如下面的图形屏幕截图所示:

output

我尝试了一段时间,但无法弄清楚如何解决这个问题。

4 个答案:

答案 0 :(得分:2)

由于只有一个结果,因此只需执行以下操作即可:

VAR=$(nmcli -g name connection show)

如果获得更多结果,则可以使用headtail命令。

活动的始终是第一个,因此要在运行多个结果时获得活动的:

VAR=$(nmcli -g name connection show | head -1)

  • VAR是变量名
  • $( ... )是命令替换。
  • 使用-g name获取所需文件的值。

这意味着运行命令并将结果放入VAR

答案 1 :(得分:0)

如果nmcli命令的输出是制表符分隔的,则可以这样做

with awk:

variable=$(nmcli connection show | awk -F'\t' '{print $4}' | tail -1)

切边:

variable=$(nmcli connection show | cut -f4 | tail -1)

答案 2 :(得分:0)

可能对您有帮助

var=$(nmcli connection show|grep -v NAME| awk -F " " '{print $1}')

致谢

答案 3 :(得分:0)

可以使用awk轻松实现:

var=$(nmcli connection show | awk 'NR==2{print $1}')
echo "$var"

输出:ens18

它如何工作?

  1. 管道运算符“ |”用于将nmcli connection show的输出传递到awk
  2. NR==2告诉awk处理第二行输入。
  3. {print $1}告诉awk打印要处理的行的第一列。