複数行を1つにコンパイルするためにawkスクリプトを使用しようとしています。どうすればいいですか?
私は次のコマンドを使用しています:
awk < $pot/towhee.prod 'NR==411{print$5,$6}''NR==412{print$5,$6}''NR==430{print$7,$8}'
これは以下を生成します。
0.24975E-01 0.00000E+00
0.36574E+04 0.59343E+02
-3340.691 0.399
しかし、私はこれが欲しい:
0.24975E-01 0.00000E+00 0.36574E+04 0.59343E+02 -3340.691 0.399
どうすればいいですか?
答え1
設定できます出力レコード区切り記号スペース(またはタブ)に移動します。印刷物に改行文字が終わるようにするには、最終印刷の前に変更を加えることができます。
awk 'BEGIN{ORS=" "} NR==411{print$5,$6}''NR==412{print$5,$6}''NR==430{ORS="\n"; print$7,$8}'
答え2
printf
を使用しない限り、改行なしで印刷形式をより効果的に制御できます\n
。
awk < $pot/towhee.prod 'NR==411{printf("%s %s ",$5,$6)}''NR==412{printf("%s %s ",$5,$6)}''NR==430{printf("%s %s ",$7,$8)}'
%s
変数を表す文字列形式です。その他の制御文字が利用可能各変数の型をより効果的に制御できます。
答え3
この試み、
awk < $pot/towhee.prod 'NR==411{print$5,$6}''NR==412{print$5,$6}''NR==430{print$7,$8}' | tr '\n' ' '