Awk技术实现:筛选第三列为数字的行并将数字乘以1000且保留N/A值
解决第三列数字乘1000并保留N/A的AWK方案
嗨,我来帮你搞定这个AWK处理的问题!你需要把文件第三列的数字(不管正负小数)乘以1000,同时保留N/A值不被修改对吧?你的原始命令里的正则表达式和计算逻辑不符合AWK语法,没法达到预期效果,我给你一个靠谱的解决方案:
正确的AWK命令
awk -F"\t" -v OFS="\t" '{ if ($3 == "N/A") { print $1, $2, $3 } else { print $1, $2, $3 * 1000 } }' 你的输入文件名.txt > output.txt
命令细节解释
-F"\t":指定输入的字段分隔符为制表符,和你的文件格式匹配-v OFS="\t":设置输出的字段分隔符也是制表符,保证输出和输入的列对齐格式一致- 核心逻辑:
- 先判断第三列
$3是否等于"N/A",如果是就直接原样输出三列内容 - 如果不是
N/A,AWK会自动把该列的字符串形式数字(包括0.16、-0.45这类正负小数)转换成数值,然后乘以1000再输出
- 先判断第三列
测试验证
输入内容
abc cat 0.16
lmm fil N/A
lmd ful -0.45
输出结果
abc cat 160
lmm fil N/A
lmd ful -450
这个命令完全满足你的需求,不管是正小数、负小数都能正确计算,同时完美保留N/A的原始内容。
内容的提问来源于stack exchange,提问作者Myke
相关产品推荐
相关产品推荐

