【问题标题】:Math operations bewteen columns with AWK使用 AWK 的列之间的数学运算
【发布时间】:2017-09-29 08:04:30
【问题描述】:

我有一个这样的数据文件:

a 1 1  m n l o p
b 2 2
c 3 3

我想通过使用 m n l o 和 p 列进行数学计算,以获得以下输出:

a 1*m+1*n+p+o-l
b 2*m+2*n+p+o-l
c 3*m+3*n+p+o-l

您知道如何在 AWK 中执行此操作吗?

【问题讨论】:

  • 你的 m,n,o,p 中有整数值吗?
  • 是的,m n l o p 实际上是数字。
  • 那么酷。让我知道我的解决方案是否对您有帮助。享受学习!!

标签: awk multiple-columns


【解决方案1】:

丑陋但似乎有效:

awk 'NR==1{ m = $4; n = $5; l= $6; o = $7; p= $8}{ print $1,$2*m+$3*n+p+o-l }' yourfile

第一部分是捕捉你的 m n l o p 并将它们存储在变量中,第二部分对每一行执行你想要的数学运算。

【讨论】:

  • 酷酷。玩得开心:)
【解决方案2】:
awk 'NR==1{split($0,a)}{print $1,$2*a[4]+$3*a[5]+a[8]+a[7]-a[6]}' file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    相关资源
    最近更新 更多