从一行生成列[bash]

时间:2018-09-13 14:02:03

标签: bash shell awk sed

有一个这样的文本行:

a b c d e f ...

我想要这个:

a b
c d
e f
...

我正在尝试使用sed,awk和for循环,但是我还没有得到...

你能帮我吗?

谢谢!

4 个答案:

答案 0 :(得分:1)

awk可以肯定地做到这一点。但是对于给定的示例和预期的结果,我将使用xargs

xargs -n2 -a file

测试:

kent$  cat f
a b c d e f

kent$  xargs -n2 -a f
a b
c d
e f

答案 1 :(得分:1)

我假设空格之间可能有多个字符,所以

$ cat tmp.txt 
a b c d e f g h i j k l m n o p q r s t u v w x y z

$ cat tmp.txt | sed 's/\([^ ]* [^ ]*\) /\1\n/g'
a b
c d
e f
g h
i j
k l
m n
o p
q r
s t
u v
w x
y z

答案 2 :(得分:1)

$ echo {a..f}
a b c d e f

$ echo {a..f} | tr -s '[:blank:]' '\n' | paste -d " " - -
a b
c d
e f

答案 3 :(得分:0)

仅使用bash

$ IFS=$' \t' read -ra a <<< "a b c d e f"
$ printf '%s %s\n' "${a[@]}"
a b
c d
e f