2013-12-07 72 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