如何在bash中对连续行进行分组?

sta*_*tti 9 bash command-line

我有一个如下所示的文件:

a
b
c
d
e
f
g
h
i
j
k
l
m
Run Code Online (Sandbox Code Playgroud)

我想重新格式化它:

a b c
d e f
g h i
j k l
m
Run Code Online (Sandbox Code Playgroud)

我希望列数可配置.你怎么用bash?我什么都想不到.

yan*_*yan 13

host:~ user$ cat file
a
b
c
d
e
f
g
h
i
j
k
l
m
host:~ user$ xargs -L3 echo < file
a b c
d e f
g h i
j k l
m
host:~ user$ 
Run Code Online (Sandbox Code Playgroud)

将'3'替换为您想要的列数.

  • echo是xargs的默认操作,所以`xargs -L3 <file` :) (2认同)

seh*_*ehe 5

xargs答案的略微改进版本将是:

xargs -n3 -r < file
Run Code Online (Sandbox Code Playgroud)

这种方式可以更好地处理尾随空格,并避免为无输入创建单个空行