从输出中提取文本并转换为CSV

时间:2014-05-10 17:01:07

标签: linux csv awk sed

我有几百个HP Onboard Administrator设备来审核固件版本和序列号。我已成功获得sshpass& ssh工作远程登录并运行"显示信息"远程命令,它沿这些行拉回输出:

$ sshpass -p password ssh -o UserKnownHostsFile=/dev/null 
-o StrictHostKeyChecking=no logon@OA_Name1 'show oa info'

Onboard Administrator #1 information:
    Product Name  : BladeSystem c7000 DDR2 Onboard Administrator with KVM
    Name          : OA_Name1
    Part Number   : 456204-B21
    Spare Part No.: 503826-001
    Serial Number : 12345678
    UUID          : 12345678
    Manufacturer  : HP
    Firmware Ver. : 3.31 May 23 2011

我想要做的是提取某些行并转换为CSV数据,以便我可以导出到电子表格以供管理层查看。

我尝试过使用grep,sed和awk,到目前为止一直惨遭失败,我想知道是否有人可以提供一些帮助?总输出根据HP软件的版本而有所不同,但它始终具有名称,序列号和序列号。固件Ver字段

理想情况下,它最终会类似于:

Name,Serial Number,Firmware Ver,
OA_Name1,12345678,3.31 May 23 2011,
OA_Name2,12345678,3.31 May 23 2011,

非常感谢提前。

戴夫

2 个答案:

答案 0 :(得分:1)

你需要这样吗?

yourcommand | sed -n 's/^[ ]*\(Name\|Serial Number\|Firmware Ver.\)[ ]*:\(.*\)/\2/p' | tr '\n' ','

答案 1 :(得分:0)

awk相似:

yourcommand | awk -F: '/Name/{n=$2} /Serial/{s=$2} /Firmware/{f=$2} END{printf "%s,%s,%s\n",n,s,f}'

因此,如果awk看到Name,则会将第二个字段保存在变量n中。如果它看到Serial,则会将第二个字段保存在变量s中。如果它看到Firmware,则会将第二个字段保存在f中。最后它打印n,s,f。

-F:将字段分隔符设置为冒号。

相关问题