我正在创建不同长度的文本的测试样本,其中每个样本由换行符分隔。目前我有3mb +文本文件,没有换行符,只有空格。我希望得到正确的reg表达方面的帮助,以确保没有换行符可以减少一半。
我非常使用reg表达式的新手。但我认为,对于300字符长度的行,它将在以下的球场:
/.{300,}\s+/&\n/g
(道歉,我知道这不起作用!)
注意:我知道有关于此主题的类似帖子,但我相对确定没有任何内容专门解决此问题。
更新:解决了!使用此命令:perl -lpe's/\b(.{80,300})\b/\1\n/g' file
答案 0 :(得分:0)
您确定数据中已有新行吗? (如果有,.
点字符将与它们不匹配)如果没有换行符,那么这样简单的东西可能会起作用:
s/\s(.{80,300})\s/$1\n/g
80下限只是一个任意选择,如果没有换行符,则很少会影响结果。如果你想要更短的线条,你可以减少300。
修改:将\b
更改为\s
,这可能是避免非字字符意外换行的更好选择,正如@tchrist所指出的那样。另外,OP没有说他需要Perl反向引用,所以tchrist将\1
更改为$1
,这对Perl更有意义。