从命令行将.dat文件中的常数乘以

时间:2019-01-16 11:48:52

标签: linux sed

我有一个.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}:

我应该怎么做?

1 个答案:

答案 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