Bash 如何合并不同的文本文件?
我有3个txt文件: file1.txt: file2.txt: file3.txt: 我想把3个文本文件合并成一个文件,并在它们之间加一个逗号 endfile.txt应如下所示: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
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