我有一个需要解析的大文件(~20GB)。我需要合并所有不以整数开头的行。文件看起来像这样:
1647 Lorem ipsum dolor sit amet, consectetur adipisicing elit
1906 ut perspiciatis unde omnis iste natus error sit
1909 Nemo enim ipsam voluptatem
dolores eos qui ratione
quia non numquam eius
nisi ut aliquid ex ea com
1820 zt enim ad minim veniam
最后我需要它看起来像这样:
1647 Lorem ipsum dolor sit amet, consectetur adipisicing elit
1906 ut perspiciatis unde omnis iste natus error sit
1909 Nemo enim ipsam voluptatem dolores eos qui ratione quia non numquam eius nisi ut aliquid ex ea com
1820 zt enim ad minim veniam
我尝试了很多东西,例如:
使用注册表...在较小的文件上效果很好,在大文件上内存不足
sed ':a;N;$!ba;s/\n[\t ]*\([a-zA-Z]\+\)/ \1/g'
使用保持缓冲区(这仅打印以整数开头的行):
sed -n '
/^[ \t]\+[0-9]\+/ {
p
h
}
/^[ \t]\+[0-9]\+/ !{
H
}
'
或者:
sed -n '
/^[ \t]\+[0-9]\+/ b jumpTO
H
$ b jumpTO
b
:jumpTO
x
p
'
它错过了从没有整数的行中替换空格和制表符的代码,它们并不重要并且实现起来很简单。
请查看代码并指出我做错了什么。 谢谢