Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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
Bash 如何合并不同的文本文件?_Bash_Shell - Fatal编程技术网

Bash 如何合并不同的文本文件?

Bash 如何合并不同的文本文件?,bash,shell,Bash,Shell,我有3个txt文件: file1.txt: file2.txt: file3.txt: 我想把3个文本文件合并成一个文件,并在它们之间加一个逗号 endfile.txt应如下所示: 11,22,33 我会尝试: cat file1.txt; cat file2.txt; cat file3.txt > endfile.txt 一行一行地写,但我想并排打印,并加一个逗号 您能帮忙吗?cat-file1.txt | cat-file2.txt | cat-file3.txt | tr'\n

我有3个txt文件:

file1.txt:

file2.txt:

file3.txt:

我想把3个文本文件合并成一个文件,并在它们之间加一个逗号

endfile.txt应如下所示:

11,22,33
我会尝试:

cat file1.txt; cat file2.txt; cat file3.txt > endfile.txt
一行一行地写,但我想并排打印,并加一个逗号
您能帮忙吗?

cat-file1.txt | cat-file2.txt | cat-file3.txt | tr'\n'','| head-bytes-1

一种非常简单的方法就是使用printf:


这将导致endfile.txt中的11,22,33。两组printf用于防止在11之前写入逗号,整行作为子shell执行,因此所有命令的输出都重定向到endfile.txt。您可能还想在file3.txt之后写一个最后的“\n”,以确保生成的endfile.txt包含POSIX行结尾。

我的答案如下

$cat*.txt | sed-z's/\n\.\/,\1/g' 如果您精确定义了顺序,则它如下所示

$cat文件{1,2,3}.txt | sed-z's/\n\.\/,\1/g' 谨慎

我的sed是4.8版

$sed-版本|头部-n 1 sed GNU sed 4.8 使用粘贴:


这里有一种方法可能重复:$cat1.txt>>out.txt;printf,>>out.txt;cat 2.txt>>out.txt;printf,>>out.txt;cat 3.txt>>out.txt;如果文件本身包含多个新行,则可能导致不希望的输出!cat file1.txt | cat-file2.txt | cat-file3.txt-只需cat file1.txt file2.txt file3.txt。cat是以串联文件命名的。file1=84G file2=15G file3=83当我运行您的代码时,我得到如下结果:,83G不幸的是它不起作用:@FurkanEryılmaz是您名为file1.txt、file2.txt、file3.txt的文件,它们是否位于当前运行命令的工作目录中?我已经多次运行该命令,结果endfile.txt包含11,22,33。除非删除>endfile.txt,否则不会向终端获得任何输出,因为所有输出都会重定向到该文件。
33
11,22,33
cat file1.txt; cat file2.txt; cat file3.txt > endfile.txt
(printf "%s" $(cat file1.txt); printf ",%s" $(cat file2.txt file3.txt)) > endfile.txt
paste -sd, file1.txt file2.txt file3.txt > endfile.txt