Text-Processing

將包含數千列的文件中的特定列相乘

  • July 23, 2019

in 文件看起來像這樣

-17.3644       0.00000000     0.00000000 ....
-17.2703       0.00000000     0.00000000 ....
-17.1761       0.00000000     0.00000000 ....
-16.5173       0.00000000     0.00000000 ....
-16.4232       0.00000000     0.00000000 ....

期望的輸出應該是

-173.644       0.00000000     0.00000000 ....
-172.703       0.00000000     0.00000000 ....
-171.761       0.00000000     0.00000000 ....
-165.173       0.00000000     0.00000000 ....
-164.232       0.00000000     0.00000000 ....

所以我想將第一列乘以 10,但同時還要保留其他 1000 列。你只列印第一列,awk '{print $1*10}' infile > outfile我怎麼能保留其他列?

嘗試

awk '{$1=$1*10 ; print }'

這將改變第一個參數,並列印整行。

要保持格式為 3 位,請使用

awk '{$1=sprintf("%.3f",$1*10);print;}' 

用python測試

#!/usr/bin/python
import re
k=open('p.txt','r')
for i in k:
   k=re.sub(' +',' ',i).split(' ')
   print float(k[0])*10,k[1],k[2]

輸出

-173.644 0.00000000 0.00000000
-172.703 0.00000000 0.00000000
-171.761 0.00000000 0.00000000
-165.173 0.00000000 0.00000000
-164.232 0.00000000 0.00000000

引用自:https://unix.stackexchange.com/questions/530462