【问题标题】:Awk add the numbers in three colums and return only one columnawk 将三列中的数字相加,只返回一列
【发布时间】:2020-03-01 09:02:55
【问题描述】:

我需要添加三列,以 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

【问题讨论】:

  • 能否请您检查一下答案并告诉我们是否对您有帮助?

标签: bash awk


【解决方案1】:

请您尝试关注一下。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2013-11-13
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    相关资源
    最近更新 更多