Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix Cat命令无法水平连接文件_Unix - Fatal编程技术网

Unix Cat命令无法水平连接文件

Unix Cat命令无法水平连接文件,unix,Unix,我试图将由一列组成的大约1000个文件水平连接到一个文件中。由于所有必须连接的文件都命名为:myfile1.txt,myfile2.txt,myfile3.txt,…,因此我使用了以下字符串: cat $myfile*.txt > myoutput.txt 不幸的是,这些文件是垂直连接的 有人能帮我吗?这个命令应该垂直连接文件;如果不是这样的话,它就会坏了。(可以编写一个带有非标准选项的cat变体,以指示其改变行为并进行水平连接,但为什么要麻烦呢?) 用于水平粘贴(连接)文件的命

我试图将由一列组成的大约1000个文件水平连接到一个文件中。由于所有必须连接的文件都命名为:
myfile1.txt
myfile2.txt
myfile3.txt
,…,因此我使用了以下字符串:

cat $myfile*.txt > myoutput.txt    
不幸的是,这些文件是垂直连接的

有人能帮我吗?

这个命令应该垂直连接文件;如果不是这样的话,它就会坏了。(可以编写一个带有非标准选项的
cat
变体,以指示其改变行为并进行水平连接,但为什么要麻烦呢?)

用于水平粘贴(连接)文件的命令是:

默认情况下,每个文件中的行将由选项卡分隔;您可以使用命令行选项控制粘贴的行为以及其他方面

如果您有一千个文件,并且每个文件中的每一行都包含(比如)10个字符,那么您的输出文件的行数将为10 KiB或更长。请注意,POSIX并不要求实用程序(命令)支持如此长的行,尽管最好是这样。(LINE_MAX的最小值为2048。)GNU确实需要支持无限长的行,但您应该仔细检查用于处理粘贴命令输出的内容是否有效

实际上,对于1000个文件,您可能不得不担心每个进程的文件描述符限制。使用
ulimit-n
(或
ulimit-a
)查找单个进程可以打开的文件数限制。如果是256,您可能需要增加它。您将最终调查“硬限制”和“软限制”(
ulimit-H-a
ulimit-S-a

(请注意,
cat$myfile*.txt
给出了与
cat myfile*.txt
不同的文件列表,除非变量赋值
myfile=myfile
是先完成的。)

该命令应该垂直连接文件;如果不是这样的话,它就会坏了。(可以编写一个带有非标准选项的
cat
变体,以指示其改变行为并进行水平连接,但为什么要麻烦呢?)

用于水平粘贴(连接)文件的命令是:

默认情况下,每个文件中的行将由选项卡分隔;您可以使用命令行选项控制粘贴的行为以及其他方面

如果您有一千个文件,并且每个文件中的每一行都包含(比如)10个字符,那么您的输出文件的行数将为10 KiB或更长。请注意,POSIX并不要求实用程序(命令)支持如此长的行,尽管最好是这样。(LINE_MAX的最小值为2048。)GNU确实需要支持无限长的行,但您应该仔细检查用于处理粘贴命令输出的内容是否有效

实际上,对于1000个文件,您可能不得不担心每个进程的文件描述符限制。使用
ulimit-n
(或
ulimit-a
)查找单个进程可以打开的文件数限制。如果是256,您可能需要增加它。您将最终调查“硬限制”和“软限制”(
ulimit-H-a
ulimit-S-a


(请注意,
cat$myfile*.txt
提供了与
cat myfile*.txt
不同的文件列表,除非变量赋值
myfile=myfile
是先完成的。)

>是指垂直连接,您应该尝试使用其他命令(我不确定如何在shell中实现,我会用其他编程语言编写脚本)cat不做任何连接,它只输出文件。标题不公平,
cat
意味着连续连接文件的内容,您想要的是交错内容。这不是
cat
承诺要做的。使用
粘贴文件1文件2文件3…
>意味着垂直连接,您不应该这样做使用其他命令创建脚本(我不确定如何在shell中实现它,我将使用其他编程语言创建脚本)cat不做任何连接,它只输出文件。标题不公平,
cat
意味着连续连接文件的内容,您想要的是交错内容。这不是
cat
承诺要做的。使用
粘贴文件1文件2文件3…
paste myfile*.txt