将单个列转换为表格格式

时间:2013-03-26 06:01:09

标签: regex shell

我有一个文件,其中包含单个列中的所有条目,如:

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

任何人都可以帮助我..

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

bash方法:

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

注意:这不是优化方法,而是另一种可能的方法。

答案 3 :(得分: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 + echo + column:

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