使用 Linux 将行转换为以逗号作为字段分隔符的列

使用 Linux 将行转换为以逗号作为字段分隔符的列
server:~# cat file1.txt
abc
pqr
xyz

我想转换如下:

abc,pqr,xyz

我正在使用下面的命令

server:~# cat file1.txt | tr "\n" ", "
abc,pqr,xyz,server:~#

请注意,我的输入可能包含 n 行,但我们不包含。

怎样才能达到..

server:~# cat file1.txt | tr "\n" ", "
abc,pqr,xyz
server:~#

答案1

你可以使用paste命令

paste -sd, file1.txt

默认情况下,paste并排粘贴多个文件中的行,并用制表符分隔;该-d选项设置备用分隔符并且该-s选项告诉它换行s一次从一个文件串行(或者,在本例中,从单个文件串行)。

答案2

paste -sd,是合理的,但如果您想要替代方案或对输入执行更多操作而不仅仅是组合行:

$ awk '{printf "%s%s", (NR>1 ? "," : ""), $0} END{print ""}' file
abc,pqr,xyz

相关内容