首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果出现在其中一列中,则从两列文件中删除行。

如果出现在其中一列中,则从两列文件中删除行。
EN

Stack Overflow用户
提问于 2018-05-07 08:32:18
回答 2查看 117关注 0票数 1

假设我有一个包含以下内容的两列文件:

代码语言:javascript
复制
1 4
1 11
4 5
5 11

我想删除所有的行,如果号码(从第一或第二列)发现在下一行,无论是在第一或第二列。

因此,我应该有这样的结果:

代码语言:javascript
复制
1 4
5 11
  • 删除初始文件中的第二行,即( 11),因为'1‘已经在第一行。
  • 第三行(4.5)被删除,因为'4‘已经在第一行。
  • 但是第四行(5 11)没有被删除,因为第三行(4 5)就在前面被删除了。

我已经尝试使用awk或排序,但没有设法获得预期的结果。有什么可以做的吗?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-07 08:37:00

遵循awk可能会帮助您在同样的。

代码语言:javascript
复制
awk '{for(i=1;i<=NF;i++){if($i in a){next};a[$i]}} 1'   Input_file
票数 0
EN

Stack Overflow用户

发布于 2018-05-07 10:19:47

这可能对您有用(GNU sed):

代码语言:javascript
复制
sed -r ':a;N;/^(\S+) (\S+)\n((\1|\2) \S+)|(\S+ (\1|\2))$/s/\n.*//;ta;P;D' file

将下一行追加到当前行。如果附加行具有当前行的任一值,则删除它并追加下一行。否则,打印然后删除当前行并重复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50210059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档