如何强制线条达到一定长度?

时间:2016-09-07 14:23:22

标签: regex text replace sed

我有一个包含非常大的5位数字列表的文本文件。有些行包含多个5位数字,而没有换行符分隔

12345
23456
34567
4567856789
67890
...
837460174975917
...

我正在尝试找到一个可以与sed一起使用的正则表达式,它将在数字之间添加换行符。

所需的输出是:

12345
23456
34567
45678
56789
67890
...
83746
01749
75917
...

我已经玩了一下,但我能想到的最好的东西就像^([0-9] {5})替换为$ 1 / r / n。但是,这会在每个数字后面添加一个换行符,之后我需要删除所有空行,因为这个文件的大小不是最佳的。

2 个答案:

答案 0 :(得分:2)

使用fold的轻量级解决方案:

示例输入:

cat filename
12345
23456
34567
4567856789

使用折叠的解决方案:

cat filename|fold -w5
12345
23456
34567
45678
56789

更新(根据Kenavoz的建议):为避免不必要地使用catpipe

fold -w5 filename 

答案 1 :(得分:1)

使用grep -o即可:

grep -Eo '.{5}' file

12345
23456
34567
45678
56789
67890
83746
01749
75917