bash - awk 将三列中的数字相加,只返回一列
问题描述
我需要添加三列,以x开头的列,并且只返回一列,其中包含三个数字的总和。其他行必须保持不变
我知道如何添加列,但我不知道如何仅使用以 x 开头的数字
awk '{ print $3 + $4 + $4}'
输入:
col1 col2 2344 4324 3544 col6 col7
col1 col2 x200 x300 x400 col6 col7
col1 col2 3543 5442 9403 col6 col7
结果:
col1 col2 2344 4324 3544 col6 col7
col1 col2 900 col6 col7
col1 col2 3543 5442 9403 col6 col7
解决方案
请您尝试以下操作。
awk '
$3~/^x/ && $4~/^x/ && $5~/^x/{
sub(/^x/,"",$3)
sub(/^x/,"",$4)
sub(/^x/,"",$5)
$3=$3+$4+$5
$4=$5=""
}
1
' Input_file | column -t
最后保留column
命令以在制表符分隔中获取输出,如果您希望以简单空格格式输出,您可以将其删除。
推荐阅读
- typescript - 加载器的 Webpack 4 语法
- groovy - Groovy 中的 int 类型 > 运算符错误
- wordpress - Wordpress 简码标签,怎么了?
- html - 如何使用 :before 和 :after 伪元素
- javascript - 为什么我在挂载的钩子中出现错误:“TypeError:e 未定义”?
- ruby-on-rails - 如何从Angular App中删除#?
- php - 使用 3 个不同的表更新第 4 个表
- ios - 如何在没有任何第三方库的情况下使用钥匙串在swift 4中存储敏感数据
- python-2.7 - AttributeError:GaussianMixture 实例没有属性“loglike”
- sql - 如何根据 Hive SQL 中的条件运行不同的选择语句