如何将包含1列的文件更改为包含2列的文件

时间:2013-08-29 04:16:25

标签: awk

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

45
88
90
77
12
29

我想将其更改为:

45  88
90  77
12  29

如何使用awk

进行操作

6 个答案:

答案 0 :(得分:3)

使用sed:

sed 'N;s/\n/ /' input

答案 1 :(得分: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

答案 2 :(得分:2)

awk版

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

另一个版本

awk 'NR%2 {printf "%s ",$0;next}1'

答案 3 :(得分:2)

我通常只使用xargs来做这件事:

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

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

答案 4 :(得分:1)

另一个awk版本:

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

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

答案 5 :(得分:1)

或者只是简单地使用shell:

while read A; do read B; echo "$A  $B"; done < file