私のUnixボックスには2GBの大きなファイルがあります。このファイルにはxml行が含まれています。各ファイルが約204 MBであると仮定し、このファイルを10個のファイルに分割しようとしています。したがって、10個のファイルをマージすると、元のファイルの2GBが返されるはずです。 10個のファイルを元のものとマージすると、コンテンツは再現可能でなければなりません。
Unixではどうすればいいですか?
答え1
次のコマンドがありますsplit
。
~$ split --help
Usage: split [OPTION]... [INPUT [PREFIX]]
Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default
size is 1000 lines, and default PREFIX is `x'. With no INPUT, or when INPUT
is -, read standard input.
...
-n, --number=CHUNKS generate CHUNKS output files.
...
CHUNKS may be:
N split into N files based on size of input
K/N output Kth of N to stdout
l/N split into N files without splitting lines
l/K/N output Kth of N to stdout without splitting lines
r/N like `l' but use round robin distribution
r/K/N likewise but only output Kth of N to stdout
だからあなたはする必要があります
~$ split -n10 -d myfile mySubFile_
-d
サフィックスを使用して、数字のサフィックス(オプション)を含む10個のファイルを作成します。mySubFile_
~$ ls -1t
mySubFile_00
mySubFile_01
mySubFile_02
mySubFile_03
mySubFile_04
mySubFile_05
mySubFile_06
mySubFile_07
mySubFile_08
mySubFile_09
君は再編成できる
cat mySubFile_* > myfile