awk は列の値を補間します。

awk は列の値を補間します。

looong txtファイルに問題があります。次の例があります。

542    701.00
789    
971    703.00
123    708.00
879    
785    
974
101    716.00

$ 2列の欠損値を欠損値付近の上位値と下位値との間の補間で置き換える必要がありますが、実際にどのように開始するのかわからないので、何も試みませんでした!誰でも私を助けることができますか?ありがとう

出力

542    701.00
789    702.00
971    703.00
123    708.00
879    710.00
785    712.00
974    714.00
101    716.00

ベストアンサー1

補間を同じ間隔で配置する必要がある場合は、次のことができます。

awk '
  NF > 1 {
    if(i++){ d=($2-s)/i; for(j=1; j<i; j++) printf "%s\t%.2f\n", a[j], s+j*d }
    s=$2; i=0; printf "%s\t%.2f\n", $1, $2
    next
  }
  { a[++i] = $1 }
' file

いいえ、これが「補間」する唯一の方法ではありません。

おすすめ記事