用sed或其他方法处理带有bash分数的数字

时间:2015-04-19 08:15:58

标签: bash awk sed

我需要处理一堆包含数字的文本文件,格式为1,56728。 原始值以cm为单位,我需要将其转换为72dpi (num * 0,393700787402 * 72)。

原始值采用此格式X= 1.767 Y= 1.5

我尝试sed s/[^0-9]找到数字,但它没有用。

我应该使用sed吗?如果是,我该如何进行计算?

1 个答案:

答案 0 :(得分:5)

我为此使用awk,它会进行浮点计算(bash不会)并且可以轻松处理您的文件格式。

$ awk -F'[= ]+' \
 'function dpi(x){return x*0.39*72}{print $1"= "dpi($2)" "$3"= "dpi($4)}' \
 input_file

-F'[= ]+'部分告诉awk在空格或等号上拆分列。函数dpi为一个输入执行转换。主块使用原始变量名称打印转换后的值。根据自己的喜好调整。