如何在Linux中的split命令中设置起始索引?

net*_*ser 3 unix linux split file


我想根据Linux中的行数将一个大文件拆分为多个文件。我读到有关splitcsplit。这些命令提供一个选项,通过利用的后缀与数值文件-d选项一样
split -d -l 100 largeFile.txt smallFile.txt.将创建一个小文件smallFile.txt.00smallFile.txt.01 ....。但我想开始索引是01不是00Man pages没有给出太多的信息。因此,请对此提供帮助,是否有更好的方法根据Linux中的行数拆分文件?

谢谢

pix*_*eat 5

从coreutils版本8.16(2012-03-26)开始,您可以执行以下操作:

split --numeric=1 -l 100 largeFile.txt smallFile.txt.
Run Code Online (Sandbox Code Playgroud)


Sea*_*rry 0

既然你说的是 Linux,那就意味着 split 来自 GNU coreutils。如果您查看 split 的源代码,处理 -d / --numeric-suffixes 选项的代码设置为采用可选参数,但调用getopt_long不会启用该参数。也许是由于兼容性原因?你应该给他们发邮件询问。

http://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=blob_plain;f=src/split.c;hb=HEAD

@@ -1153,7 +1153,7 @@ main (int argc, char **argv)
       int this_optind = optind ? optind : 1;
       char *slash;

-      c = getopt_long (argc, argv, "0123456789C:a:b:del:n:u",
+      c = getopt_long (argc, argv, "0123456789C:a:b:d:el:n:u",
                        longopts, NULL);
       if (c == -1)
         break;
Run Code Online (Sandbox Code Playgroud)

此补丁允许处理可选的数字参数。然后你可以调用 split 作为:

split -d 1 foo foo.split.
Run Code Online (Sandbox Code Playgroud)

而且数字是从 1 开始的,而不是从 0 开始。

您可以从http://www.gnu.org/software/coreutils/获取源代码,并自行应用此更改,如果您愿意,也可以在本地使用它。