我有一个非常大的文件,如下所示:
//abc/file1.js
some javascript code
//abc/file2.js
some javascript code
//abc/file3.js
some javascript code
在这里,我想将这个大文件拆分成几部分并将这些部分存储到file1.js
,file2.js
等。
答案 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)
如果您可以编辑文件,并且确切地知道要分割的位置,而不是某些字节偏移,那么只需将新片段复制到新文件中,并使用您想要的名称保存这些新片段和现有文件。也就是说,使用编辑器本身。