如何在bash中从nmcli输出中提取单个字段?
我想提取以下命令的结果以将其存储在变量中:如何在bash中从nmcli输出中提取单个字段?,bash,shell,Bash,Shell,我想提取以下命令的结果以将其存储在变量中: nmcli connection show 提取的结果应为ens18。相反,大致如下所示: NAME UUID TYPE DEVICE ens18 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 802-3-ethernet ens18 …如下面的图形屏幕截图所示: 我尝试了一会儿,但不知道如何解决这个问题。由于您只有一个结果,您可以简
nmcli connection show
提取的结果应为ens18
。相反,大致如下所示:
NAME UUID TYPE DEVICE
ens18 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 802-3-ethernet ens18
…如下面的图形屏幕截图所示:
我尝试了一会儿,但不知道如何解决这个问题。由于您只有一个结果,您可以简单地执行以下操作:
VAR=$(nmcli -g name connection show)
如果获得更多结果,可以使用head
和tail
命令
活动的始终是第一个,因此要在有多个结果运行时获取活动的:
VAR=$(nmcli -g name connection show | head -1)
是变量名VAR
是命令替换$(…)
- 使用
获取所需字段的值-g name
这意味着运行该命令并将结果放入
VAR
中,因为您只有一个结果,您只需执行以下操作:
VAR=$(nmcli -g name connection show)
如果获得更多结果,可以使用head
和tail
命令
活动的始终是第一个,因此要在有多个结果运行时获取活动的:
VAR=$(nmcli -g name connection show | head -1)
是变量名VAR
是命令替换$(…)
- 使用
获取所需字段的值-g name
这意味着运行该命令并将结果放入
VAR
中,如果nmcli命令的输出以制表符分隔,则可以执行此操作
使用awk:
variable=$(nmcli connection show | awk -F'\t' '{print $4}' | tail -1)
带切口:
variable=$(nmcli connection show | cut -f4 | tail -1)
如果nmcli命令的输出以制表符分隔,则可以执行此操作 使用awk:
variable=$(nmcli connection show | awk -F'\t' '{print $4}' | tail -1)
带切口:
variable=$(nmcli connection show | cut -f4 | tail -1)
也许,这会对你有所帮助
var=$(nmcli connection show|grep -v NAME| awk -F " " '{print $1}')
这可能对你有所帮助
var=$(nmcli connection show|grep -v NAME| awk -F " " '{print $1}')
关于使用
awk
可以轻松实现:
var=$(nmcli connection show | awk 'NR==2{print $1}')
echo "$var"
产出:ens18
它是如何工作的
nmcli connection show
的输出传递到awk
NR==2
告诉awk
处理第二行输入{print$1}
告诉awk
打印正在处理的行的第一列使用
awk
可以轻松实现:
var=$(nmcli connection show | awk 'NR==2{print $1}')
echo "$var"
产出:ens18
它是如何工作的
nmcli connection show
的输出传递到awk
NR==2
告诉awk
处理第二行输入{print$1}
告诉awk
打印正在处理的行的第一列应尽可能避免截图,以利于复制和粘贴文本(或至少显示截图和文本表示,正如现在编辑的问题所做的那样)——尽管on专门针对代码,但许多原因也适用于其他地方。屏幕截图不可搜索;不能复制和粘贴用于测试或故障排除;人们无法可靠地检测到隐藏的或相似的字符;等等。应尽可能避免截图,以利于复制和粘贴文本(或至少显示截图和文本表示,正如问题现在编辑的那样)——尽管在上特别提到代码,但许多原因也适用于其他地方。屏幕截图不可搜索;不能复制和粘贴用于测试或故障排除;人们无法可靠地检测到隐藏的或相似的字符;等等。
nmcli连接show | awk'{var=$4}END{print var}
将避免启动tail
的副本,也将仅使用空格而不是制表符。nmcli连接show | awk'{var=$4}END{print var}
将避免启动tail
的副本,而且还可以使用空格,而不仅仅是制表符。awk'/NAME/{print$1}'
将避免需要单独的grep
awk'/NAME/{print$1}'
将避免需要单独的grep
。