如何使用shell将大文件拆分成碎片

时间:2013-06-28 03:41:31

标签: shell

我有一个非常大的文件,如下所示:

//abc/file1.js

some javascript code

//abc/file2.js

some javascript code

//abc/file3.js

some javascript code

在这里,我想将这个大文件拆分成几部分并将这些部分存储到file1.jsfile2.js等。

3 个答案:

答案 0 :(得分:2)

你可以用awk做到这一点。打印出每个输入行,但输出的文件名会在输入行指示新文件开始时更改。

awk '
    /^\/\/abc\// { filename = $1; sub(/.*\//, "", filename); next; }
    filename { print >filename }
'

如果您希望包含标题行,请删除对next的来电,例如将//abc/file1.js作为file1.js的第一行。您可能需要根据需要调整识别标题行的代码。第一个标题行之前的文本不会在任何地方打印;如果要将其打印到标准输出,请将filename { … }更改为1 { … }

答案 1 :(得分:1)

尝试csplit -k -f file - '/^\/\//' '{1000}' < largefile

将1000调整为合适的数字。如果largefile中有 n 个文件,请使用 n -2而不是1000。

如果您使用的是GNU csplit,则只需使用*代替1000。

如果largefile中有多个文件,您还需要使用-n 4或更高的值。

答案 2 :(得分:-3)

如果您可以编辑文件,并且确切地知道要分割的位置,而不是某些字节偏移,那么只需将新片段复制到新文件中,并使用您想要的名称保存这些新片段和现有文件。也就是说,使用编辑器本身。