awk - 使用 Awk 对文本文件进行重复数据删除,但保留非空字段的行
问题描述
我正在尝试使用 Awk 对文本文件的行进行重复数据删除,但更喜欢使用非空字段“f4”保留重复的行(除非所有这些重复的行都有一个空白字段“f4”)。
输入文件
f1|f2|f3|f4|f5
aa|bb|cc||ee
aa|bb|cc|dd|ee
aa|bb|cc|dd|ee
aa|bb|cc||ee
aaa|qq|ccc||eee
aaa|qq|ccc|zz|eee
aaa|qq|ccc|zz|eee
aaa|qq|ccc||eee
aaa|qq|ccc||eee
new|test|ccc||eee
new|test|ccc||eee
需要的输出
f2|f4
bb|dd
qq|zz
test|
代码尝试(不工作 - 得到错误的输出):
awk ' BEGIN { FS=OFS="|" }
{ if ( !seen[$2, $3]++ ) print $2, $4 } ' Input_File
错误的输出
f2|f4
bb|
qq|
test|
解决方案
你可以做:
awk 'BEGIN{FS=OFS="|"}
$4 {print $2,$4}' file
添加去重逻辑:
awk 'BEGIN{FS=OFS="|"}
$4 && seen[$2]++<1 {print $2,$4}' file
推荐阅读
- git - 使用本地 .git 凭据从 vsCode 提交远程项目 .git 存储库中的代码
- proxy - 使用 Mitmproxy 后,Android 中没有互联网连接
- python - 如何调试 vage 错误 lxml.etree.SerialisationError:python 中的未知错误 -2029930774
- sql-server - Logstash 配置错误 - 未设置 jdbc_driver_library
- javascript - 使用 javascript 或 css 具有“.active”类的滑块的第一个和最后一个元素的不透明度
- git - 带有电子邮件参数的 GIT 拉取命令
- vue-component - Vuetify 动态数据表组件
- angular - 如何在输入字段中使用 PercentPipe
- python - 无法发布 >250MB 的文件
- java - 使用 selenium 和 java 获取 div 的总数