解析する必要がある大きなファイル (~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
'
整数のない行からスペースとタブを置き換えるコードがありません。それらは重要ではなく、実装するのは簡単です。
コードを見て、私が間違っていることを指摘してください。 ありがとうございました