1

我正在创建不同长度的文本的测试样本,其中每个样本由换行符分隔。目前我有 3mb+ 的文本文件,没有换行符,只有空格。我希望获得有关正确 reg 表达式的帮助,以确保没有换行符将单词减半。

我对使用 reg 表达式很陌生。但我假设对于 300 个字符长度的行,它会在以下范围内的某个地方:

/.{300,}\s+/&\n/g

(抱歉,我知道这不起作用!)


注意:我知道有关于这个主题的类似帖子,但我相对肯定没有什么专门针对这种情况的。


更新:解决了!使用此命令: perl -lpe's/\b(.{80,300})\b/\1\n/g' file

4

1 回答 1

0

您确定数据中已经没有新行吗?(如果有,.点字符将不匹配它们)如果没有换行符,那么简单的事情可能会起作用:

s/\s(.{80,300})\s/$1\n/g

80 下限只是一个任意选择,如果没有换行符,它很少会影响结果。如果你想要更短的线条,你可以降低 300。

编辑:更改\b\s可能是更好的选择,以避免在非单词字符周围出现意外的换行符,正如@tchrist 所指出的那样。此外,OP 没有说他需要 Perl 反向引用,所以 tchrist 更改\1$1,这对 Perl 更有意义。

于 2012-05-01T23:19:08.310 回答