awk - 打印以两个字段为条件的连续行并减去另一个字段
问题描述
如果它们具有匹配的第一场但在第三场中具有相反的信号,我想打印连续的行。然后计算连续行的第二个字段之间的距离。
输入:
id1 pos1 0.19
id1 pos2 0.33
id1 pos3 -0.25
id1 pos4 -0.22
id2 pos5 0.33
id3 pos6 -0.21
id3 pos7 -0.56
id3 pos8 -0.20
id3 pos9 0.33
id3 pos10 -0.32
中间输出:
id1 pos2 0.33
id1 pos3 -0.25
id3 pos8 -0.20
id3 pos9 0.33
id3 pos10 -0.32
期望的输出:
id1 pos3-pos2
id3 pos9-pos8
id3 pos10-pos9
我发现比较连续行的类似问题,但没有一个可以用来回答我的问题。
到目前为止,我尝试过:
awk '$1==prev1{$NF=$2-prev2;print $1,$NF} {prev2=$2;prev1=$1}'
但我不知道如何添加第三场的条件必须有相反的信号。
解决方案
请您尝试以下操作。
awk '
prev!=$1{
prev_val=prev=""
}
prev==$1{
if(($NF~/^-/ && prev_val!~/^-/) || ($NF!~/^-/ && prev_val~/^-/)){
print $1,$2,$NF-prev_val
}
}
{
prev=$1
prev_val=$NF
}
' Input_file
推荐阅读
- python-3.x - 是否有一种简单的方法可以通过内置函数自动重新训练 keras NLP 模型?
- c# - 是否需要在 Sqlite db DateTime 列中插入特定的日期格式?
- c# - 使用 EF Core 更新时检查重复项?
- android - 如何在线性布局的文本视图之间分配空间以适应不同的文本长度
- windows - Windows 用户主目录
- r - 如何以返回满足聚合条件的整行的方式聚合 R 中的数据?[没有 dplyr]
- html - 删除最后一个数组元素并返回数组并分别返回删除的元素
- c - 为什么在执行时间上差分功率分析 (DPA) 比相关功率分析 (CPA) 更快?
- powerbi - PowerBI中按关键字(字符串)过滤
- selenium-webdriver - 运行 selenium webdriver 脚本时出现 Jmeter 脚本错误