如何使用shell将大文件拆分为多个部分
我有一个非常大的文件,看起来像这样:如何使用shell将大文件拆分为多个部分,shell,Shell,我有一个非常大的文件,看起来像这样: //abc/file1.js some javascript code //abc/file2.js some javascript code //abc/file3.js some javascript code 在这里,我想将这个大文件分成若干部分,并将这些部分存储到file1.js,file2.js等尝试csplit-k-f文件-'/^\/\/'{1000}'
//abc/file1.js
some javascript code
//abc/file2.js
some javascript code
//abc/file3.js
some javascript code
在这里,我想将这个大文件分成若干部分,并将这些部分存储到
file1.js
,file2.js
等尝试csplit-k-f文件-'/^\/\/'{1000}'
将1000调整到合适的数字。如果largefile
中有n个文件,请使用n-2而不是1000
如果您使用的是GNU csplit,您可以简单地使用*
而不是1000
如果
大文件中有许多文件,您还需要使用-n4
或更高的值。如果您可以编辑该文件,并且您确切地知道要拆分的位置,而不是某个字节偏移量,则只需将新文件复制到新文件中,并用您想要的名称保存这些新文件和现有文件。也就是说,使用编辑器本身。您可以使用awk实现这一点。打印每个输入行,但打印到一个文件名,该文件名在输入行指示新文件启动时更改
awk '
/^\/\/abc\// { filename = $1; sub(/.*\//, "", filename); next; }
filename { print >filename }
'
如果希望包含标题行,例如将//abc/file1.js
作为file1.js
的第一行,请删除对next
的调用。您可能需要根据您的需求调整识别标题行的代码。第一个标题行之前的文本将不会在任何地方打印;如果您想将其打印为标准输出,请将filename{…}
更改为1{…}
。@lhf,您能给出更多细节或示例吗?谢谢另请参见和。此文件非常大,超过150000行。这并不是很大:-)我使用Vim处理了更大的文件。我这么说的唯一原因是,如果文件不仅仅是任意的,而且需要在特定文本处拆分,那么编辑器是最好的选择。