使用cut命令打印正确的字段

时间:2015-01-14 10:49:08

标签: bash cut

这是我用来显示存储卷信息的非常简短的脚本:

get_ip="$(ssh $1@$2 volume show"
echo "$get_ip"

当我运行我的bash脚本时,这是向终端吐出的内容:

Vserver   Volume       Aggregate    State      Type       Size  Available Used%
--------- ------------ ------------ ---------- ---- ---------- ---------- -----
vs_cfm06  Available    aggr_backup_1 online    RW        100GB    66.35GB   33%
vs_cfm06  Discovery    aggr_backup_1 online    RW        100GB    66.35GB   33%
vs_cfm06  Software     aggr_backup_1 online    RW        100GB    65.08GB   34%
vs_cfm06  Template     aggr_backup_1 online    RW        100GB    66.35GB   33%
vs_cfm06  rootvol      aggr_backup_1 online    RW          1GB    972.5MB    5%
vs_cfm06  vol          aggr_backup_1 online    RW          1GB    972.6MB    5%
6 entries were displayed.

我真正想要的是卷的名称:

Volume
---------
Available
Discovery
Software
Template
rootvol 
vol    

我需要对命令进行哪些更改才能获取此信息? 非常感谢!

2 个答案:

答案 0 :(得分:1)

如果您只想要第二列(包含标题但不包含最后一行),请使用awk,如下所示:告诉它只是获取包含8个字段的行。

get_ip="$(ssh $1@$2 volume show)"
echo "$get_ip" | awk 'NF==8{print $2}'

测试

文件a包含您的给定输入。

$ awk 'NF==8{print $2}' a
Volume
------------
Available
Discovery
Software
Template
rootvol
vol

答案 1 :(得分:0)

echo "$get_ip" | grep -v "entries" | awk '{print $2}'

或切割:

echo "$get_ip" | tr -s " " | grep -v "entries" | cut -d " "  -f 2