我在Unix中有一个包含以下记录的数据文件:
1
2
3
4
5
6
我将传递一个参数,根据该参数创建一个新文件。例如,参数值为2,新文件为:
1 2
3 4
5 6
同样,如果parm是3,那么:
1 2 3
4 5 6
有人可以给我一些关于如何做到这一点的提示吗?
谢谢, Visakh
答案 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