行数が制限されている特定の列に定数値を追加し、小数桁の精度を設定する方法

行数が制限されている特定の列に定数値を追加し、小数桁の精度を設定する方法

10行から20行までの3番目(2番目)列に定数値を追加したいと思います。行う方法?このコードを試してみましたが、うまく動作しているようです。それは私に同じ出力ファイルを与えます。誰かがなぜこれがうまくいくのかを説明できますか?

 awk '{if(NR>9) $3=$3+1; print $0}' <file_input  > file_output

この場合、awkを使用するよりも優れた解決策があると思いますか?教えてください。ありがとうございます。みんなに頑張ってください。

これはinput_fileのヘッダーです

SCAN U=3
1.0
+7.2621642310  +0.0000000000  +0.0000000000
+0.0000000000  +7.4947599620  +0.0000000000
-0.4702406680  +0.0000000000 +50.5797763000
O W
56 20
Selective
Cartesian
+6.9271068928 +7.2623406786 33.3906 T T T

...次のように続行すると、予想される結果は次のとおりです。

SCAN U=3
1.0
+7.2621642310  +0.0000000000  +0.0000000000
+0.0000000000  +7.4947599620  +0.0000000000
-0.4702406680  +0.0000000000 +50.5797763000
O W
56 20
Selective
Cartesian
+6.9271068928 +8.2623406786 34.3906 T T T

そして、演算結果の小数点以下の精度はどのように設定しますか?

ベストアンサー1

私はそれを知っています

awk 'NR>9 && NR<21{
  printf "%s %+.10f %.4f %s %s %s\n",$1,1+$2,1+$3,$4,$5,$6; 
  next ; }
 {print}' 

どこ

  • printfフォーマットのため
  • %+.10f最高の精度を誇る10個のフロートがあります。+
  • 固定数のフィールドの使用
  • 一行で書くこともできます。読み取り用に区分しました。

場合によっては、localeプレフィックスを追加する必要があります。LANG=C

例えば

LANG=C awk '...'

私のフランス地域の回線は

+6.9271068928 +8,0000000000 34,0000 T T T

おすすめ記事