我有一个这样的输入文件:
Apr 24 2014;
is;
a;
sample;
;
Jun 24 2014 123;
may 25 2014;
is;
b;
sample;
;
Dec 21 2014 987
我想要这样的输出:
Apr 24 2014;is;a;sample;;Jun 24 2014 123
may 25 2014;is;b;sample;;Dec 21 2014 987
(我使用ksh(
对于包含以下内容的数据文件:
$ cat file
Apr 24 2014;
is;
a;
sample;
;
Jun 24 2014 123
may 25 2014;
is;
b;
sample;
;
Dec 21 2014 987
你可以做:
$ awk '{ORS=(NR%6?"":RS)}1' file
Apr 24 2014;is;a;sample;;Jun 24 2014 123
may 25 2014;is;b;sample;;Dec 21 2014 987
我们将输出字段分隔符设置为每6条记录后打印一行新行(默认值为RS
(。
您可以通过说将输出重定向到另一个文件
awk '{ORS=(NR%6?"":RS)}1' file > newfile
或者执行以下操作以更改当前文件
awk '{ORS=(NR%6?"":RS)}1' file > tmp && mv tmp file
虽然标题建议使用严格的awk解决方案,但也有一个ksh标记,因为这似乎是程序唯一应该做的事情,也许这也可以:
paste -d' ' - - - - - - < file
就像awk
版本一样,第一行中仍然有一个尾随分号,这在输出示例中不存在。我不知道这会不会是个问题?
perl -lne 'undef $a if($.%7==0);
$a.=$_;
if($.%6==0 ||(eof))
{$a=~s/;$//;print $a};' Your_file
此处测试