对列的提取部分执行算术

对列的提取部分执行算术

我有一个文本文件,其字段如下

 1; 3435; 45--XY 
 2; 3436; 15--XY 
 3; 3437; 23--XY

我需要将第一列与最后一列的数字部分相乘,然后将它们显示在输出文件中。我该怎么做?我认为awk将是最直接的命令。

尝试过:awk -F';' '{print substr($3,1,2)* $1}' input.txt > output.txt

答案1

简单的

awk '{print $1 * $3}' input.txt

命令将完成这项工作。在这种情况下,不需要从字段中提取数字。

这是由数字转换机制引起的awk-awk 如何在字符串和数字之间进行转换,即:

通过将字符串的任何数字前缀解释为数字,将字符串转换为数字:“2.5”转换为 2.5,“1e3”转换为 1,000,“25fix”的数值为 25。 无法解释的字符串因为有效数字转换为零。

输出

45
30
69

答案2

awk解决方案:

awk -F';' '{ gsub(/[^0-9]+/,"",$NF); print $1*$NF }' input.txt > output.txt
  • gsub(/[^0-9]+/,"",$NF)[^0-9]+-从最后一个字段中删除所有非数字字符$NF

内容output.txt

45
30
69

相关内容