3

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

//abc/file1.js

some javascript code

//abc/file2.js

some javascript code

//abc/file3.js

some javascript code

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

4

3 回答 3

2

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

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

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

于 2013-07-02T18:32:39.327 回答
1

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

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

如果你使用的是 GNU csplit,你可以简单地使用*而不是 1000。

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

于 2013-06-28T04:02:04.850 回答
-3

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

于 2013-06-28T04:34:47.270 回答