用awk将单行分成多行编号格式

我试图将awk命令分成三部分。 需要帮助打入3。

内容= 1. 11683 (<server01>: du.size[/,free] : 0.5 % 2. 21683 (<server02>: du.size[/,free] : 1.5 % 3. 31683 (<server03>: du.size[/,free] : 3.5 %

我想在编号系统中将上述内容分成三行。

所需的示例输出:

 1. 11683 (<server01>: du.size[/,free] : 0.5 % 2. 21683 (<server02>: du.size[/,free] : 1.5 % 3. 31683 (<server03>: du.size[/,free] : 3.5 % 

我已经尝试了以下命令:

 echo $content | awk -F"3. " '{ print $2 }' 

我得到了

 31683 (<server03>: du.size[/,free] : 3.5 % 

对于其他人也是如此,但是仍然没有以上面所示的正确的编号格式获取样本输出。

谁可以帮我这个事 ?

你可以使用sed来代替:

 sed "s#[^^]\([0-9]\.\) #\n\1 #g" 

例:

 [~/Desktop] ==> echo "1. 11683 (<server01>: du.size[/,free] : 0.5 % 2. 21683 (<server02>: du.size[/,free] : 1.5 % 3. 31683 (<server03>: du.size[/,free] : 3.5 %" | sed "s#[^^]\([0-9] \.\) #\n\1 #g" 1. 11683 (<server01>: du.size[/,free] : 0.5 % 2. 21683 (<server02>: du.size[/,free] : 1.5 % 3. 31683 (<server03>: du.size[/,free] : 3.5 % 

%符号看起来是一个很好的候选人分裂。 尝试:

 sed 's/% /%\n/g' 

测试:

 echo "1. 11683 (<server01>: du.size[/,free] : 0.5 % 2. 21683 (<server02>: du.size[/,free] : 1.5 % 3. 31683 (<server03>: du.size[/,free] : 3.5 %" | sed 's/% /%\n/g' 

结果:

 1. 11683 (<server01>: du.size[/,free] : 0.5 % 2. 21683 (<server02>: du.size[/,free] : 1.5 % 3. 31683 (<server03>: du.size[/,free] : 3.5 % 
 perl -pe 's/(\d+\.\s)/\n$1/g' 

测试:

 > echo "1. 11683 (<server01>: du.size[/,free] : 0.5 % 2. 21683 (<server02>: du.size[/,free] : 1.5 % 3. 31683 (<server03>: du.size[/,free] : 3.5 %" | perl -pe 's/(\d+\.\s)/\n$1/g' 1. 11683 (<server01>: du.size[/,free] : 0.5 % 2. 21683 (<server02>: du.size[/,free] : 1.5 % 3. 31683 (<server03>: du.size[/,free] : 3.5 % 

您的数据显示固定的元素数量。

 { print $1, $2, $3, $4, $5, $6, $7 print $8, $9, $10, $11, $12, $13, $14 print $15, $16, $17, $18, $19, $20, $21 } 

如果您必须对除打印之外的其他数据进行任何操作,这一点很有用。

尝试

 echo "1. 11683 (<server01>: du.size[/,free] : 0.5 % 2. 21683 (<server02>: du.size[/,free] : 1.5 % 3. 31683 (<server03>: du.size[/,free] : 3.5 %" | awk '{n = split($0,array,"%"); for (i = 0; i < n-1; ++i){gsub("^ ","",array[i+1]);print array[i+1]" %",i}}'