2013-12-07 32 views
1

我试图将块式记录转换成表格。该记录是关于磁盘的AIX ODM信息。如何使用awk或sed将块样式记录格式化为表格?

-------------------------------------------------------- 
lsattr -El hdisk2 :- 

pvid   00f68614bd9b2da20000000000000000 Physical volume identifier  False 
q_err   no     Use QERR bit      True 
q_type   simple    Queue TYPE      True 
queue_depth 16     Queue DEPTH      True 
reserve_lock no     Reserve Device on open   True 
reserve_policy single_path  N/A        True 
rw_timeout  40     READ/WRITE time out value  True 
scsi_id  0x71003f   SCSI ID       False 
start_timeout 180    START UNIT time out value  True 
ww_name  0x5000097208426d54 FC World Wide Name    False 
-------------------------------------------------------- 
lsattr -El hdisk3 :- 

pvid   00f686145f0caa790000000000000000 Physical volume identifier  False 
q_err   no        Use QERR bit      True 
q_type   simple       Queue TYPE      True 
queue_depth 16        Queue DEPTH      True 
reserve_lock no        Reserve Device on open   True 
reserve_policy single_path      N/A        True 
rw_timeout  40        READ/WRITE time out value  True 
scsi_id  0x71003f       SCSI ID       False 
start_timeout 180        START UNIT time out value  True 
ww_name  0x5000097208426d54    FC World Wide Name    False 
-------------------------------------------------------- 

所需的输出是一个表,列出PVID,reserve_policy和ww_names,如:

hdisk2 00f68614bd9b2da20000000000000000 single_path 5000097208426d54 
hdisk3 00f686145f0caa790000000000000000 single_path 5000097208426d54 

如何通过awk完成这件事还是sed的? 请帮忙。 感谢

回答

1

此行给你想要的东西:

awk 'BEGIN{RS="---+\n";a["pvid"];a["reserve_policy"];a["ww_name"]}{printf "%s",$3;for(i=1;i<=NF;i++)if($i in a)printf " %s", $(i+1);print ""}' file 

更好的阅读的版本:

awk 'BEGIN{RS="---+\n" 
      a["pvid"] 
      a["reserve_policy"] 
      a["ww_name"]} 
{printf "%s",$3 
for(i=1;i<=NF;i++) 
    if($i in a)printf " %s", $(i+1) 
print ""}' file 
+0

哇,这是真棒。谢谢,肯特。你知道关于awk的任何深入的在线教程吗?因为我只能找到初学者。 – Rafa

+0

@rafa:一定要“接受”解决你的问题的答案(意思是这个!--))。至于awk教程,你可以很好地阅读肯特在S.O的awk上的答案。用任何语言获得先进的经验都需要解决先进的问题。所以不要堵塞。祝你们好运。 – shellter

+0

http://www.gnu.org/software/gawk/manual/gawk.html我认为它适合初学者和“初学者” – Kent