我有一个类似下面的输出,我希望将其转换为单行(没有空格)
vol sysvol : 25654
vol sysvol : 39%
vol sysvol : 820928KB
vol vol01 : 502
vol vol01 : 0%
vol vol01 : 16064KB
vol vol02 : 65491
vol vol02 : 99%
vol vol02 : 2095712KB
DB : 91647
DB : 46%
DB : 2932704KB
我使用了下面的命令
awk 'NR%3{printf "%s,",$0;next;}1'
但它会返回像
这样的输出 vol sysvol : 25654 , vol sysvol : 39% , vol sysvol : 820928KB
vol vol01 : 502 , vol vol01 : 0% , vol vol01 : 16064KB
vol vol02 : 65491 , vol vol02 : 99% , vol vol02 : 2095712KB
DB : 91647 , DB : 46% , DB : 2932704KB
我希望输出的内容如
vol sysvol: 25654 , 39% , 820928KB
vol vol01 : 502 , 0% , 16064KB
vol vol02 : 65491 , 99% , 2095712KB
DB : 91647 , 46% , 2932704KB
请帮忙。
答案 0 :(得分:2)
awk
救援!
awk -F: -v OFS=, '{if (NR%3==1) printf "%s : %s",$1,$2 OFS;
else printf "%s", $2 (NR%3?OFS:ORS)}' file
vol sysvol : 25654, 39%, 820928KB
vol vol01 : 502, 0%, 16064KB
vol vol02 : 65491, 99%, 2095712KB
DB : 91647, 46%, 2932704KB
答案 1 :(得分:0)
$ cat tst.awk
BEGIN { FS=":"; OFS="," }
$1 != prev { if (NR>1) print rec; rec=$0; prev=$1; next }
{ rec = rec OFS $2 }
END { print rec }
$ awk -f tst.awk file
vol sysvol : 25654 , 39% , 820928KB
vol vol01 : 502 , 0% , 16064KB
vol vol02 : 65491 , 99% , 2095712KB
DB : 91647 , 46% , 2932704KB