【发布时间】:2017-01-15 07:11:10
【问题描述】:
我有一个文本文件,其中包含一个非常大的 5 位数字列表。有些行包含多个 5 位数字,没有换行符分隔它们
12345
23456
34567
4567856789
67890
...
837460174975917
...
我正在尝试找到一个可以与 sed 一起使用的正则表达式,它将在数字之间添加换行符。
期望的输出是:
12345
23456
34567
45678
56789
67890
...
83746
01749
75917
...
我已经玩了一点,但我能想到的最好的方法是将 ^([0-9]{5}) 替换为 $1/r/n。但是,这会在每个数字后添加一个换行符,并且我需要在之后删除所有空行,由于此文件的大小,这不是最佳的。
【问题讨论】:
-
那么,sed 还是 Notepad++?在 NPP 中,您可以尝试
^([0-9]{5})\B并替换为$1\r\n$2 -
我将使用 sed,因为文件对于 notepad++ 来说太大了。解决方案可以是或者,因为我只是在寻找一个可以满足我需求的正则表达式。
-
sed 不支持将 Boost 正则表达式风格作为 NPP。试试
sed -E "s/^([0-9]{5})(.)/\1\r\n\2/g"