作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含两列的文件,例如:
A B
1 2
10 20
100 200
.
.
.
我想通过 awk 计算梯度(或斜率)dB/dA。这意味着第三列应该是 B 列中每个相邻行之间的差异除以 A 列中每个相应相邻行之间的差异。上述日期的结果应该是:
A B dB/dA
1 2 (20-2)/(10-1)=2
10 20 (200-20)/(100-10)=2
100 200
.
.
.
我该怎么做?
最佳答案
根据你的文件,你可以这样做:
$cat file
A B
1 2
10 20
100 200
awk 'BEGIN{OFS="\t"}NR==1{print $1,$2,"dA/dB"}NR>2{print a,b,($2-b)/($1-a)}{a=$1;b=$2}' file
A B dA/dB
1 2 2
10 20 2
100 200 2
与:
BEGIN{OFS="\t"}
将输出字段分隔符设置为制表符NR==1{print $1,$2,"dA/dB"}
复制标题并添加 grad 列 NR>2
从第二行(值)开始跳过标题和第一行{a=$1;b=$2}
为下一行保存 a
和 b
中的值。这部分从第一行开始{print a,b,($2-b)/($1-a)}
打印上一行和这行与上一行之间的渐变希望对你有帮助
关于bash - 如何用AWK计算梯度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25114633/
我是一名优秀的程序员,十分优秀!