Linux/Unix 命令用分隔符连接 N 行输入?

Linux/Unix 命令用分隔符连接 N 行输入?

在 Linux/Unix 命令行中,我想要将其转换为:

A
B
C
A
B
C
.
.
.

变成这样:

A,B,C
A,B,C
...

是否有一个简单的内置命令可以执行此操作,或者是否需要深入研究 Awk、Perl 等?

答案1

不知道有这样的内置功能。使用Bash你可以:

while read a && read b && read c ; do echo $a,$b,$c ; done < file

答案2

这太可怕了,肯定是这样的

tr \\n ' '

会做同样的事吗?

例如,要连接文件的行文件行使用

cat file_lines | tr \\n ' '

答案3

POSIX 解决方案pr

pr -3 -a -t -s, file

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/pr.html

答案4

这是一个解决方案awk

awk '{printf "%s%s", $1, NR%3 ? "," : "\n"}'

对于大文件来说,它比提出的解决方案要快得多xargs

更新:如果行数不是 3 的倍数。

awk '{printf "%s%s", d, $1; d=NR%3 ? "," : "\n"}'

相关内容