订购和创建Unix文件

时间:2011-07-13 07:46:30

标签: unix

我在Unix中有一个包含以下记录的数据文件:

  

1

     

2

     

3

     

4

     

5

     

6

我将传递一个参数,根据该参数创建一个新文件。例如,参数值为2,新文件为:

  

1 2

     

3 4

     

5 6

同样,如果parm是3,那么:

  

1 2 3

     

4 5 6

有人可以给我一些关于如何做到这一点的提示吗?

谢谢, Visakh

2 个答案:

答案 0 :(得分:2)

你可以使用这个perl one-liner:

perl -e "map chomp, @a=<>; print join(' ', splice @a,0,2).$/ while @a;" <(seq 6)
# 1 2
# 3 4
# 5 6

perl -e "map chomp, @a=<>; print join(' ', splice @a,0,3).$/ while @a;" <(seq 6)
# 1 2 3
# 4 5 6

您可以轻松地将其合并到shell脚本中:

n=3
perl -e "map chomp, @a=<>; print join(' ', splice @a,0,$n).$/ while @a;" <file>

答案 1 :(得分:1)

#!/usr/bin/perl -w

# formatter.pl

use strict;
use warnings;

my $newlineCnt = $ARGV[1];
if (! defined $newlineCnt) { $newlineCnt = 1; }

my $idx = 0;
while (<>) {
    if ($idx == $newlineCnt) { print "\n"; $idx = 0; }
    $idx++;
    print "$_ ";
}

在命令行中,省略参数默认为1

$ formatter.pl < testData.txt
1
2
3
4
5
6

在命令行上,将2指定为测试参数:

$ formatter.pl 2 < testData.txt
1 2
3 4
5 6