2013-03-26 86 views
0

我有一個包含像一列的所有項目文件:轉換單列成表格格式

0 
SYSCATSPACE 
16384 
13432 
2948 
1 
1 
TEMPSPACE1 
1 
1 
applicable 
1 
2 
USERSPACE1 
4096 
1888 
2176 
1 

但是我想轉換這個在3*6以表格形式:

0 SYSCATSPACE 16384 13432 2948  1 
1 TEMPSPACE1 1  1  applicable 1 
2 USERSPACE1 4096 1888 2176  1 

誰能幫我...

回答

1

使用SED:

sed -n 'N;N;N;N;N;s/\n/ /gp' input 

它讀取6行,用空格替換換行符並打印出單行。如果要對齊列,你可以用column這樣做:

sed -n 'N;N;N;N;N;s/\n/ /gp' input | column -t 
+0

工作在Linux環境很好..但列-t沒有在AIX工作.. – Sandy 2013-03-26 10:44:17

0
perl -lne '$a.="$_ ";if($.%6==0){push(@x,$a);$a=""}END{for(@x){print $_}}' your_file 
0

bash的方法:

while read a; do 
    read b; read c; read d; read e; read f; 
    echo "$a $b $c $d $e $f" 
done 

注意:這不是最優化的方法,只是多了一個可行的方法。

0

的另一種方法,使用xargs的+ printf的

cat list.txt | xargs -n 6 printf "%10s%20s%10s%10s%10s%10s\n" 

,或者只是的printf

printf "%10s%20s%10s%10s%10s%10s\n" `cat list.txt` 

基於字段長度修改的%10s值至合適的數量。

或只是xargs的回聲+ +柱:

cat list.txt | xargs -n 6 echo | column -t 
+0

工作在Linux環境很好..但列-t不在aix工作.. – Sandy 2013-03-26 10:45:33

+0

&printf是什麼?我只在ubuntu上測試過它... – anishsane 2013-03-26 17:10:42