awk - 删除文件中出现的所有内容

标签 awk sed

假设我有一个具有以下格式内容的文件:

6 8
6 9
12 20
6
8
9
12
20
35

如果在下一行中找到数字(来自第一列或第二列),无论它是在第一列还是第二列(包括找到初始数字的行),我想删除所有行。

所以我应该得到这样的结果:

35

我尝试过使用

awk '{for(i=1;i<=NF;i++){if($i in a){next};a[$i]}} 1' 

有没有简单的方法可以做到这一点?

最佳答案

这一行应该有帮助:

awk 'NR==FNR{a[$0]++;next}{for(i=1;i<=NF;i++)if(a[$i]>1)next}7' 
     RS=" |\n" file RS="\n" file

使用此输入文件:

100 200 300
6 8
6 9
12 20
6
8
9
12
20
35

上面一行将输出:

100 200 300
35

关于awk - 删除文件中出现的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50909152/

相关文章:

regex - 将 sed 一行代码转换为 perl

regex - 从 linux 命令行替换大文件中的特定不可打印字符

bash - 删除文件中第一次出现特定字符串之前的所有行

linux - bash 在给定模式之前用逗号查找并替换 "enter"

linux - 使用 Linux 命令从文本中删除一些行

linux - 将 awk 操作存储在变量中

bash跨多个字段查找非冗余数据

记录分隔符中的 awk 和美元符号

linux - 根据另一个文件中的字符串拆分一个文件

linux - 获取最后一行匹配项的第一个单词