awk - awk 删除具有多个重复列字段但在其他列字段中具有特定模式的行
问题描述
基本上,如果前 3 列具有相同的值,我想保留所有没有第四列值 =“-”的行。在这种情况下,我想删除第一行,但保留接下来的 2 行..
A B C -
A B C D1
A B C D2
AA BB CC D3
AB BC CD D4
FA FB FC -
GA GB GC DN
预期输出:
A B C D1
A B C D2
AA BB CC D3
AB BC CD D4
FA FB FC -
GA GB GC DN
我能够了解
awk '!(seen[$1,$2,$3]++ && $4 == "-")'
不删除任何行,但是如何修改条件以删除第一行?
我仍然想保留“FA FB FC -”,因为没有其他行的前 3 列为“FA FB FC”。
解决方案
要删除第 4 个字段的行,-
您可以简单地执行此操作。
awk 'FNR==NR{a[$1,$2,$3]++;next} a[$1,$2,$3]>1 && $4=="-"' Input_file Input_file
推荐阅读
- excel - 您可以使用组合框的值来选择单元格范围吗
- c# - 如果不创建绑定对象的新实例,则 OnPropertyChange 不会更新绑定
- git - 在 `git status` 中显示 @{push} 和 @{upstream} 的状态
- java - 片段通信问题(尝试调用虚方法)
- android - Android Studio片段没有响应后按按钮
- mysql - 向Mysql中插入数据哪种方式更好更安全?Sql使用节点?
- sql - 根据最新交易过滤给定日期/时间的数据
- excel - 如何在同一个工作表上运行多个 VBA 代码
- r - 为什么具有因子分组的堆叠条形图的 y 值在 geom_bar(stat = "identity") 中增加?
- css - 垂直滚动页面时在视口中具有绝对位置