AWK 2 番目の列を負の符号で特定の行の最初のデータに置き換えます。

AWK 2 番目の列を負の符号で特定の行の最初のデータに置き換えます。

最初の列(例:1.20E-05)の最初のデータを取得し、2番目の列全体を負の符号付きの最初のデータに置き換えたいと思います。その後、最後のデータ行を削除して新しいファイルとして印刷したいと思います。

私は次のデータを持っています:

body comments Vxx yy zz 0 pwl (

 1.20E-05 1
 1.21E-05 1.1
 1.22E-05 1.2
 1.23E-05 1.3
 1.24E-05 0 +)

予想出力:

body comments Vxx yy zz 0 pwl (

 0.00E-05 1
 0.01E-05 1.1
 0.02E-05 1.2
 0.03E-05 1.3 +)

ベストアンサー1

質問はあまり明確ではありません。私が理解したところによると、これはあなたにとってどれほど役に立ちますか?

awk '
NR==1   {print
         next}
NR==2   {Subtrahend = $1
        }
        {if (Prev) print Prev
         $1   = sprintf("%.2g", $1-Subtrahend)
         Prev = $0
        }
END     {print $NF
        }' file
body comments Vxx yy zz 0 pwl (
0 1
1e-07 1.1
2e-07 1.2
3e-07 1.3
+)

ヘッダー行を印刷したら、行2に必要な減算を保存し、すべての行の最初のフィールドからそれを減算します。 Prev変数を使用すると、印刷が1行ずつ延期されるため、最後の行(除外+))をスキップまたは削除できます。

フォーマットは別の話です。必要に応じて少しの努力/処理が必要です。

おすすめ記事