awk: 모든 행에서 첫 번째 행을 빼고 인수를 곱합니다.

awk: 모든 행에서 첫 번째 행을 빼고 인수를 곱합니다.

숫자가 포함된 파일이 있습니다.

$ cat file.dat
0.092593
0.048631
0.027957
0.030699
0.026250
0.038156
0.011823
0.013284
0.024529
0.022498
0.013217
0.007105
0.018916
0.014079

다른 모든 숫자에서 첫 번째 숫자를 빼고 그 차이에 627.509를 곱하고 싶습니다. 예상 출력

$ cat newfile.dat
0.000000
-27.586551
-40.559672
-38.839042
-41.630830
-34.159707
-50.683902
-49.767111
-42.710773
-43.985243
-49.809154
-53.644489
-46.232981
-49.268242

awk로 이 작업을 수행하고 싶다면 awk 문 앞에 첫 번째 숫자가 포함된 변수를 만들어야 합니까?

factor=$(head -1 myfile.dat)

아니면 awk로 이 작업을 완전히 수행할 수 있나요?

답변1

어때요?

awk 'NR == 1 {DELTA = $0} {$0 = ($0 - DELTA) * FAC; print}' FAC=627.509 file

답변2

이것은 작동하는 것 같습니다:

$ awk -v c=627.509 'NR==1 { b=$1 } { printf( "%0.6f\n", ( $1-b ) * c ) }' file.dat
0.000000
-27.586551
-40.559672
-38.839042
-41.630830
-34.159707
-50.683902
-49.767111
-42.710773
-43.985243
-49.809154
-53.644489
-46.232981
-49.268242

관련 정보