Bash 读取数以百万计的文件(按一定顺序)并将其放入一个大文件中——快速

Bash 读取数以百万计的文件(按一定顺序)并将其放入一个大文件中——快速,bash,Bash,在我的bash脚本中,我有以下内容(为了具体起见,我保留了原始名称; 有时人们会询问背景等,然后原来的名字就更有意义了): 也就是说,跳过文件数据的第一行,然后跳过所有行,这些行是 读取表格“rcpn”,并附加文件实例/p的内容 归档$nF(按照数据给出的顺序) 在典型示例中,数据有数百万行。所以也许我应该写一篇文章 C++应用程序。然而,我想知道是否有人知道一个更快的答案 仅使用bash的解决方案?这里我使用cut而不是while循环,但是如果它提供了一些实用程序,您可以重新介绍它。循环必须在

在我的bash脚本中,我有以下内容(为了具体起见,我保留了原始名称; 有时人们会询问背景等,然后原来的名字就更有意义了):

也就是说,跳过文件数据的第一行,然后跳过所有行,这些行是 读取表格“rcpn”,并附加文件实例/p的内容 归档$nF(按照数据给出的顺序)

在典型示例中,数据有数百万行。所以也许我应该写一篇文章 C++应用程序。然而,我想知道是否有人知道一个更快的答案
仅使用bash的解决方案?

这里我使用
cut
而不是while循环,但是如果它提供了一些实用程序,您可以重新介绍它。循环必须在每次迭代中输出
phy
变量一次

tail -n +2 Data | cut -d' ' -f 2 | xargs -I{} cat Instances/{} >> $nF

这将
cat
调用的数量减少到尽可能少,这将提高效率。我还相信,在这里使用
cut
将进一步改善情况。

您每个文件有一个cat进程,也许您想对这些进程进行分组。有没有一种简单的方法来进行分组?上述问题的方向是学习BASH的一些一般技巧,但是当它变得更复杂时,我可能更喜欢写一个C++程序(在这种情况下,只需要几行)。示例3,2,1…谢谢,我正在我的示例案例中评估它,这需要一点时间:我们有1365418行数据,时间命令产生原始方法(如我的问题中所给出的)real 54m15.805s,user 12m25.520s,sys 20m58.947s。@Oliver Kullmann:我急切地等待您关于任何改进的报告。当然,我不知道如何进一步改进这个脚本。如果它仍然没有性能,我建议改写其他语言,最终在C中,如果Perl中的性能不够,那么为了测试的目的,如果你使用C,拷贝使用“代码> SDENFrase”,你可能想对该数据文件进行编译。我现在写了一个C++程序,它应该尽可能的高效。Time命令现在生成实际的16m57.551s、用户0m16.674s、系统0m56.396s,变化很小(重复两次)。原来的代码为54米,改进的BASH版本为34M,C++代码为17M。我将重复上面的时间测量,如果结果不同,我将在这里发表评论。
tail -n +2 Data | cut -d' ' -f 2 | xargs -I{} cat Instances/{} >> $nF