Bash 在逗号数后添加新行
我排了这么长的队:Bash 在逗号数后添加新行,bash,scripting,sed,awk,Bash,Scripting,Sed,Awk,我排了这么长的队: kvm1.example.corp,18:18:48,x86_64,16,11,11,0,0,0,0,0,11,0,4.6,99056376,4980736,4980736,5450000000,1,s-75-VM,460000000.,0.385304090422,262144,0,0,3,743,0,2,v-30-VM,450000000.,0.376927914543,1048576,1,0,6,7676,4765,3,r-80-VM,430000000.,0.3601
kvm1.example.corp,18:18:48,x86_64,16,11,11,0,0,0,0,0,11,0,4.6,99056376,4980736,4980736,5450000000,1,s-75-VM,460000000.,0.385304090422,262144,0,0,3,743,0,2,v-30-VM,450000000.,0.376927914543,1048576,1,0,6,7676,4765,3,r-80-VM,430000000.,0.360175562786,131072,0,0,0,208,0,5,i-2-81-VM,10000000.,0.00837617587873,1048576,1,0,0,0,0,6,r-83-VM,430000000.,0.360175562786,131072,0,0,0,156,0,7,i-3-82-VM,710000000.,0.59470848739,524288,0,0,0,0,0,8,r-85-VM,410000000.,0.343423211028,131072,0,0,0,208,0,11,i-3-84-VM,710000000.,0.59470848739,524288,0,0,0,0,0,12,i-2-79-VM,690000000.,0.577956135633,524288,0,0,2,0,0,13,r-87-VM,420000000.,0.351799386907,131072,0,0,0,156,0,14,i-3-88-VM,730000000.,0.611460839147,524288,0,0,2,0,0
我试图得到这样的输出
1,s-75-VM,460000000.,0.385304090422,262144,0,0,3,743,0,
2,v-30-VM,450000000.,0.376927914543,1048576,1,0,6,7676,4765,
3,r-80-VM,430000000.,0.360175562786,131072,0,0,0,208,0,
5,i-2-81-VM,10000000.,0.00837617587873,1048576,1,0,0,0,0,
6,r-83-VM,430000000.,0.360175562786,131072,0,0,0,156,0,
7,i-3-82-VM,710000000.,0.59470848739,524288,0,0,0,0,0,
8,r-85-VM,410000000.,0.343423211028,131072,0,0,0,208,0,
11,i-3-84-VM,710000000.,0.59470848739,524288,0,0,0,0,0,
12,i-2-79-VM,690000000.,0.577956135633,524288,0,0,2,0,0,
13,r-87-VM,420000000.,0.351799386907,131072,0,0,0,156,0,
14,i-3-88-VM,730000000.,0.611460839147,524288,0,0,2,0,0
我不确定在删除标题后,在第9个逗号后添加新行时应该采取哪种策略?awk-F'{for(col=19;colawk -F, '{for (col = 19; col < NF; col += 10) {
for (i = 0; i < 10; i++) { printf("%s,", $(col+i)); }
printf "\n"; }
}'
对于(i=0;i<10;i++){printf(“%s,”,$(col+i));}
printf“\n”}
}'
使用sed更简单
:
$ sed -r 's/([^,]+,){18}//;s/(([^,]+,){10})/\1\n/g' file
1,s-75-VM,460000000.,0.385304090422,262144,0,0,3,743,0,
2,v-30-VM,450000000.,0.376927914543,1048576,1,0,6,7676,4765,
3,r-80-VM,430000000.,0.360175562786,131072,0,0,0,208,0,
5,i-2-81-VM,10000000.,0.00837617587873,1048576,1,0,0,0,0,
6,r-83-VM,430000000.,0.360175562786,131072,0,0,0,156,0,
7,i-3-82-VM,710000000.,0.59470848739,524288,0,0,0,0,0,
8,r-85-VM,410000000.,0.343423211028,131072,0,0,0,208,0,
11,i-3-84-VM,710000000.,0.59470848739,524288,0,0,0,0,0,
12,i-2-79-VM,690000000.,0.577956135633,524288,0,0,2,0,0,
13,r-87-VM,420000000.,0.351799386907,131072,0,0,0,156,0,
14,i-3-88-VM,730000000.,0.611460839147,524288,0,0,2,0,0
在bash中:
(
IFS="," read -a fields <<< "$longline"
set -- "${fields[@]:18}"
IFS=","
while (( $# > 0 )); do
echo "${*:1:10}"
shift 10
done
)
(
IFS=“,”在perl中读取-a字段:
perl -F, -lane 'for($min=18;$min<scalar(@F);$min+=10){print join ",",@F[$min..$min+10]}'
perl-F,-lane'($min=18;$min)谢谢你,我正在努力跟上awk,干得好!非常感谢!
> echo "kvm1.example.corp,18:18:48,x86_64,16,11,11,0,0,0,0,0,11,0,4.6,99056376,4980736,4980736,5450000000,1,s-75-VM,460000000.,0.385304090422,262144,0,0,3,743,0,2,v-30-VM,450000000.,0.376927914543,1048576,1,0,6,7676,4765,3,r-80-VM,430000000.,0.360175562786,131072,0,0,0,208,0,5,i-2-81-VM,10000000.,0.00837617587873,1048576,1,0,0,0,0,6,r-83-VM,430000000.,0.360175562786,131072,0,0,0,156,0,7,i-3-82-VM,710000000.,0.59470848739,524288,0,0,0,0,0,8,r-85-VM,410000000.,0.343423211028,131072,0,0,0,208,0,11,i-3-84-VM,710000000.,0.59470848739,524288,0,0,0,0,0,12,i-2-79-VM,690000000.,0.577956135633,524288,0,0,2,0,0,13,r-87-VM,420000000.,0.351799386907,131072,0,0,0,156,0,14,i-3-88-VM,730000000.,0.611460839147,524288,0,0,2,0,0" | perl -F, -lane 'for($min=18;$min<scalar(@F);$min+=10){print join ",",@F[$min..$min+10]}'
1,s-75-VM,460000000.,0.385304090422,262144,0,0,3,743,0,2
2,v-30-VM,450000000.,0.376927914543,1048576,1,0,6,7676,4765,3
3,r-80-VM,430000000.,0.360175562786,131072,0,0,0,208,0,5
5,i-2-81-VM,10000000.,0.00837617587873,1048576,1,0,0,0,0,6
6,r-83-VM,430000000.,0.360175562786,131072,0,0,0,156,0,7
7,i-3-82-VM,710000000.,0.59470848739,524288,0,0,0,0,0,8
8,r-85-VM,410000000.,0.343423211028,131072,0,0,0,208,0,11
11,i-3-84-VM,710000000.,0.59470848739,524288,0,0,0,0,0,12
12,i-2-79-VM,690000000.,0.577956135633,524288,0,0,2,0,0,13
13,r-87-VM,420000000.,0.351799386907,131072,0,0,0,156,0,14
14,i-3-88-VM,730000000.,0.611460839147,524288,0,0,2,0,0,