我有一个非常大的文件,如下所示:
//abc/file1.js
some javascript code
//abc/file2.js
some javascript code
//abc/file3.js
some javascript code
在这里,我想将这个大文件分成几部分并将这些部分存储到file1.js
等中file2.js
。
我有一个非常大的文件,如下所示:
//abc/file1.js
some javascript code
//abc/file2.js
some javascript code
//abc/file3.js
some javascript code
在这里,我想将这个大文件分成几部分并将这些部分存储到file1.js
等中file2.js
。
你可以用 awk 做到这一点。打印出每个输入行,但只要输入行指示新文件开始,文件名就会更改。
awk '
/^\/\/abc\// { filename = $1; sub(/.*\//, "", filename); next; }
filename { print >filename }
'
next
如果您希望包含标题行,请删除对的调用,例如//abc/file1.js
作为file1.js
. 您可能需要根据您的要求调整识别标题行的代码。第一个标题行之前的文本不会在任何地方打印;如果要将其打印到标准输出,请更改filename { … }
为。1 { … }
试试csplit -k -f file - '/^\/\//' '{1000}' < largefile
。
将 1000 调整为合适的数字。如果 中有n 个文件largefile
,请使用n -2 而不是 1000。
如果你使用的是 GNU csplit,你可以简单地使用*
而不是 1000。
如果 中有很多文件largefile
,您还需要使用-n 4
或更高的值。
如果您可以编辑文件,并且您确切地知道要拆分的位置,而不是某个字节偏移量,那么只需将新部分复制到新文件中,并使用您想要的名称保存这些新部分和现有文件。也就是说,使用编辑器本身。