次のような1列のファイルがあります。
45
88
90
77
12
29
私はそれを次のように変更したい:
45 88
90 77
12 29
どうすればそれを使用できawk
ますか?
sedを使用:
sed 'N;s/\n/ /' input
$ 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
awk バージョン
awk '{printf "%s ",$0;getline;print $0}' file
別バージョン
awk 'NR%2 {printf "%s ",$0;next}1'
私は通常xargs
、この種のことに使用します:
$ xargs -n2 < file
45 88
90 77
12 29
新しいスクリプトを書き直さなくても、値を 2 から必要な列数に変更するだけでうまくスケーリングできます。
または、単純にシェルを使用します。
while read A; do read B; echo "$A $B"; done < file
別のawk
バージョン:
awk 'NR%2 == 1 { old = $0 }
NR%2 == 0 { print old " " $0 }' file
の奇数行を思い出してくださいold
。古い値と新しい値を偶数行に出力します。