首页 > 解决方案 > 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

标签: bashawk

解决方案


请您尝试以下操作。

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命令以在制表符分隔中获取输出,如果您希望以简单空格格式输出,您可以将其删除。


推荐阅读