0

我有一个包含这样一列的文件:

45
88
90
77
12
29

我想把它改成这样:

45  88
90  77
12  29

我该怎么做awk

4

6 回答 6

3
$ awk '{printf "%s%s", $0, (NR%2 ? OFS : ORS)}' file
45 88
90 77
12 29

或者,如果您对 awk 理解得相当好,您可能更喜欢:

$ awk '{ORS=(NR%2?FS:RS)}1' file
45 88
90 77
12 29
于 2013-08-29T12:20:18.550 回答
3

使用 sed:

sed 'N;s/\n/ /' input
于 2013-08-29T04:34:12.253 回答
2

我通常只xargs用于这种事情:

$ xargs -n2 < file
45 88
90 77
12 29

我可以很好地缩放,因为您只需将值从 2 更改为您想要的列数,而无需重写新脚本。

于 2013-08-29T08:13:50.353 回答
2

awk 版本

awk '{printf "%s ",$0;getline;print $0}' file

另一个版本

awk 'NR%2 {printf "%s ",$0;next}1'
于 2013-08-29T05:12:35.813 回答
1

另一个awk版本:

awk 'NR%2 == 1 { old = $0 }
     NR%2 == 0 { print old " " $0 }' file

old记住;中的奇数行 在偶数行上打印旧值和新值。

于 2013-08-29T05:25:24.197 回答
1

或者只是简单地使用外壳:

while read A; do read B; echo "$A  $B"; done < file
于 2013-08-29T08:31:00.600 回答