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一度に1つのファイル(またはこの場合は単一のファイル)からシリアル化します。

答え2

paste -sd,合理的ですが、代替を望んだり、行を結合するよりも入力としてより多くのことを行う場合:

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

関連情報