一部の特定の列のみを変更して、入力列のASCIIデータファイルを印刷したい。awkを使用して列を変更すると(例:$ NF = 99)、最後に「print $ 0」コマンドを実行すると、出力は正しく出力されますが、他の列のスペースの埋め込み、書式設定などはすべて失われます。(それらはすべて基本的にOFSに置き換えられます)。
指定された列のみを変更して、awkにまったく同じ入力を出力させる方法はありますか?この出力を、非常に厳密な読み取り形式を持つ別のFortranコードに渡す必要があります。そのため、行の書式を変更する余裕はありません。
awkがこの目的で使用する必要のあるソフトウェアではない場合、何を提案しますか?
更新:例:
エントリを続けて入力します。
0 0 0 0 0 0 0 1936 24170 2536 1987 24094 2543 2037 24153 2550 2088 24202 2557 27 24 24.5 10000.0 0.31 0.0 10000.0 0.0 0.0 0.0 0.65
そのエントリをに変換したい
0 0 0 0 0 0 0 1936 24170 2536 1987 24094 2543 2037 24153 2550 2088 24202 2557 27 24 24.5 10000.0 10000.0 10000.0 10000.0 10000.0 10000.0 10000.0 10000.0
重要な部分は、他の列の間隔と位置をそのまま維持することです。
タスクを実行するためにできる最も近いことは、次のコマンドです。
gawk '{output=$0;for (i=0;i<8;i++){output=substr(output,0,97+8*i-1)"10000.0"substr(output, 97+8*(i+1)-1)}; print output}'