首页 > 解决方案 > 从文件 B 的列表中删除文件 A 中的所有单词

问题描述

我有两个文件:A 和 B。

A的内容:

p218    first_departure_date    p219    2017-01-03  p220    sg40    Joe p221    expire_date 222 11-09-2024  p223    dob 224 00-00-0000  p225    gender  226 MR  p227    last_departure_date 228 2017-01-03

文件 B 中的内容:

p219
p218
p220
p221
p227
p223
p225
p228

预期成绩:

first_departure_date    2017-01-03  sg40    Joe expire_date 11-09-2024  dob 00-00-0000  gender  MR  last_departure_date 2017-01-03

现在,我想从文件 B 中删除文件 A 中所有出现的行。

我试过以下:

grep -vxFf fileB fileA > fileC

但它根本没有做任何事情。

标签: bashawksed

解决方案


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

sed 's/[^[:alnum:]]/\\&/g;s/.*/s#&\\s*##g/' fileB | sed -f - fileA

这使用 fileB 创建一个 sed 脚本,该脚本删除 fileB 中的任何单词,然后是 fileA 中可能的空格。


推荐阅读