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

时间:2019-09-16 08:25:58

标签: bash shell

我有3个txt文件:

file1.txt

11

file2.txt

22

file3.txt

33

我想将3个文本文件合并为一个文件,并在它们之间加上逗号。

endfile.txt应该如下:

11,22,33

我会尝试:

cat file1.txt; cat file2.txt; cat file3.txt > endfile.txt

逐行写,但是我想并排打印并用逗号分隔 你能帮忙吗?

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

(printf "%s" $(cat file1.txt); printf ",%s" $(cat file2.txt file3.txt)) > endfile.txt

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

答案 2 :(得分:0)

我的回答如下。

$ cat *.txt | sed -z 's/\n\(.\)/,\1/g'

如果您确切定义顺序,则紧随其后。

$ cat file{1,2,3}.txt | sed -z 's/\n\(.\)/,\1/g'

答案 3 :(得分:0)

使用paste

paste -sd, file1.txt file2.txt file3.txt > endfile.txt