Shell-Script

將程序輸出的逐行塊轉換為 CSV,同時刪除行標題

  • December 20, 2019

需要你的幫助,我的命令輸出是:

Server1:  
CPU(S):  8  
RAM: 24  
Socket: 2  

Server2:  
CPU(S):  16   
RAM: 32   
Socket: 5 

期望的輸出:

Server1:,8,24,2  
Server2:,16,32,5    
awk '
 NF==1 { printf "%s%s", NR==1 ? "" : ORS, $1 }
 NF==2 { printf ",%s", $2 }
 END   { printf "%s", ORS }
' file
  • 如果該行包含一個欄位:

    • 如果這不是第一行,則列印一個換行符
    • 列印欄位1
  • 如果該行包含兩個欄位,則列印一個逗號和 field2

  • 最後,列印一個換行符

$ awk -v RS= -v OFS=',' '{print $1, $3, $5, $7}' file
Server1:,8,24,2
Server2:,16,32,5

引用自:https://unix.stackexchange.com/questions/557808