awk-打印没有换行的列值并添加逗号

jac*_*ack 7 awk text-processing

输入文件

 EN1
 EN2
 EN3
 EN4
 EN5
Run Code Online (Sandbox Code Playgroud)

输出

EN1,EN2,EN3,EN4,EN5
Run Code Online (Sandbox Code Playgroud)

我试过 awk。但它不是用逗号打印

awk 'BEGIN { OFS = ","} { printf $1}' input.txt
Run Code Online (Sandbox Code Playgroud)

我有 GNU Awk 4.0.0 版本

Lev*_*von 7

awk 'BEGIN{ORS=","}1' input.txt
Run Code Online (Sandbox Code Playgroud)

产生这个:

EN1,EN2,EN3,EN4,EN5,
Run Code Online (Sandbox Code Playgroud)

所以用逗号印刷(所以我不知道我理解您的评论在您的文章关于这个不会发生),但我怀疑后面的逗号是一个问题。

使用 GNU Awk 3.1.7 测试

  • 问题使用了`OFS`,这个答案使用了`ORS` .. 这解释了行为的差异...... `printf` 不会产生 ORS (2认同)

小智 5

我知道,老话题,但我无法抗拒 - 这是另一种简短而简单的方法:

$ paste -sd, input.txt
EN1,EN2,EN3,EN4,EN5
$
Run Code Online (Sandbox Code Playgroud)

适用于 Linux 和 Solaris,甚至可能适用于其他平台。