我有一个包含这样一列的文件:
45
88
90
77
12
29
我想把它改成这样:
45 88
90 77
12 29
我该怎么做awk
?
$ 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
使用 sed:
sed 'N;s/\n/ /' input
我通常只xargs
用于这种事情:
$ xargs -n2 < file
45 88
90 77
12 29
我可以很好地缩放,因为您只需将值从 2 更改为您想要的列数,而无需重写新脚本。
awk 版本
awk '{printf "%s ",$0;getline;print $0}' file
另一个版本
awk 'NR%2 {printf "%s ",$0;next}1'
另一个awk
版本:
awk 'NR%2 == 1 { old = $0 }
NR%2 == 0 { print old " " $0 }' file
old
记住;中的奇数行 在偶数行上打印旧值和新值。
或者只是简单地使用外壳:
while read A; do read B; echo "$A $B"; done < file