我想编写一个重新整形文本文件的脚本,如下所示:
word1
word2
word3
word4
word5
word6
word7
word8
word9
word10
word11
word12
...
进入这个:
word1 word2 word3 word4
word5 word6 word7 word8
word9 word10 word11 word12
...
有没有人知道这么做的简单方法?
答案 0 :(得分:2)
perl -i.bak -pwe 's/\S\s*\K\n$/ /' input.txt
-i.bak
在input.txt.bak
-p
在您的脚本周围放置一段时间(<>)循环\K
转义意味着“在此之前保留任何内容”。另一种选择:
perl -i.bak -lpwe 'BEGIN { $/="" }; s/\n/ /g' input.txt
在BEGIN块中使用段落模式,并使用带有-l
的换行符跟随每个打印件
答案 1 :(得分:1)
perl -l -00 -aF/\s*\n\s*/ -ne 'print "@F"' /source/file > /dest/file
解释(使用TLP的建议)
print
的行为与say
类似。@F
答案 2 :(得分:1)
您的群组似乎是“段落”所以请仔细阅读;在空白处分开单词;使用单个空格(空白)重新加入它们并打印结果:
#!/usr/bin/env perl
use strict;
use warnings;
local $/ = '';
my @words;
while (<DATA>) {
@words = split;
print join q( ), @words, "\n";
@words = ();
}
__DATA__
word1
word2
word3
word4
word5
word6
word7
word8
word9
word10
word11
word12