我有一个文本文件,其字段如下
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