我有一个.dat文件,该文件的行中有数据。每行用大括号括起来,数字用逗号分隔。我想通过命令行将整个文件内容乘以一个常数,这样就不必手动进行操作。
例如
:{0, 16, 0, 0, 0, 0.0187782, 0.053621, 0.0045498, 3.2744e-05, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}:
我应该怎么做?
答案 0 :(得分:-1)
您可以使用Perl
做这样的事情,例如:
echo 10,20,999| perl -ple 's/(\d+)/$1*10/ge'
100,200,9990
这将因负数和指数而失败,因此您需要更好的正则表达式来指定数字的外观。我不是正则表达式方面的专家,但至少看起来像这样与我差不多:
echo ":{0, 16, 0.0187782, 0.053621, 0.0045498, 3.2744e-05}:" | perl -ple 's/([-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?)/$1*10/ge'
:{0, 160, 0.187782, 0.53621, 0.045498, 0.00032744}:
如果有人拥有更好的正则表达式,请说出我会更新。
如果数据在文件中,则可以执行以下操作:
perl ... < file.dat