bash - 删除文件 A 中包含文件 B 中字符串的所有行

标签 bash awk sed grep comm

我有 2 个文本文件,想要在文件 A 中删除包含文件 B 中字符串的行

文件A:

joe     ball     1335
john    dyer     1365
dylan   fisher   1795
ian     gill     1913
eric    kelly    1101

文件B:

1795
1913

我希望 Bash 代码得到这样的结果:

joe     ball     1335
john    dyer     1365
eric    kelly    1101

我尝试了这些代码,但没有找到答案

$ grep -vwF -f A B
$ awk -F'[ ,]' 'FNR==NR{a[$1];next} !($4 in a)'

最佳答案

awk  'NR==FNR{a[$1];next} !($3 in a)' fileB fileA

它使用空格作为字段分隔符,$1 是一行的第一列元素,$3 是该行的第三列元素。 使用数组 a 存储 fileB 元素 a[$1]。检查 fileA 的第 3 列元素 是否在数组a中,如果不在则打印整行 输出:

joe     ball     1335
john    dyer     1365
eric    kelly    1101

关于bash - 删除文件 A 中包含文件 B 中字符串的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41217167/

相关文章:

awk,打印所有列并使用 substr 添加新列

bash - 持久 AWK 程序

linux - 有没有办法在 sed 中获取字符的 ASCII 码?

xml - 为什么计数节点不起作用?

linux - awk 在 linux 上运行的脚本中不起作用

python - 如何删除 csv 中的 unicode 标签?

awk - 从 bash 中删除与另一个文件中的行相匹配的 CSV 文件中的行?

bash - awk 中 shell 变量的用法

bash - 为什么 [[ -eq ]] 在 Bash 中将非数字字符串显示为相等?

bash - 在第一行之后停止读取行循环时的Shell脚本