ファイルは次のとおりです
-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
最初の列だけが印刷される場合、他の列はどのように維持されますか?
答え1
努力する
awk '{$1=$1*10 ; print }'
これにより、最初のパラメータが変更され、行全体が印刷されます。
3桁の形式を維持するには、次を使用します。
awk '{$1=sprintf("%.3f",$1*10);print;}'
答え2
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
答え3
$ < infile tr \- _ |
dc -e "
[q]sq
[SMlN1+sNz1<a]sa
[LMn32anlN1-dsN0<b]sb
[?z0=q0sNlax.1/n32anlbx[]pclcx]sc
3klcx
"
出力:
-173.644 0 0 0 0 0 0
-172.703 0 0 0 0 0 0
-171.761 0 0 0 0 0 0
-165.173 0 0 0 0 0 0
-164.232 0 0 0 0 0 0
簡単な説明:
これはメインスタックにデータを格納するdc
逆ポーランド表記計算機です。RPN
フィールドが1つだけ残るまで、現在の行のフィールドを名前付きスタックMに保存します。 .1で割って== 10を掛け、結果にスケーリングを適用します。次に、Mスタックに戻り、変更されていない現在のラインフィールドをメインスタックに戻します。 Mスタックから取り出している間、stdoutとして印刷し続けます。ファイルの終わりまたは空白/空行に達すると(どちらか最初に発生した場合)、終了します。