0

次のような1列のファイルがあります。

45
88
90
77
12
29

私はそれを次のように変更したい:

45  88
90  77
12  29

どうすればそれを使用できawkますか?

4

6 に答える 6

3

sedを使用:

sed 'N;s/\n/ /' input
于 2013-08-29T04:34:12.253 に答える
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 に答える
2

awk バージョン

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

別バージョン

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

私は通常xargs、この種のことに使用します:

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

新しいスクリプトを書き直さなくても、値を 2 から必要な列数に変更するだけでうまくスケーリングできます。

于 2013-08-29T08:13:50.353 に答える
1

または、単純にシェルを使用します。

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

別のawkバージョン:

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

の奇数行を思い出してくださいold。古い値と新しい値を偶数行に出力します。

于 2013-08-29T05:25:24.197 に答える