bash - 从文件 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
但它根本没有做任何事情。
解决方案
这可能对您有用(GNU sed):
sed 's/[^[:alnum:]]/\\&/g;s/.*/s#&\\s*##g/' fileB | sed -f - fileA
这使用 fileB 创建一个 sed 脚本,该脚本删除 fileB 中的任何单词,然后是 fileA 中可能的空格。
推荐阅读
- java - 在 JAVA 中使用 char '{' 定义字符串
- ios - AudioKit 的 RenderToFile 无法正常工作
- cakephp - 如何在 Cakephp 3.5 中的控制器/视图中动态设置头部 css 和页脚上的 js
- xml - 选择父子属性值
- android - android,同时将两个活动放在堆栈上
- angular - ng生成应用程序之间的区别
和新的 - node.js - node-sass 总是找不到命令!!!我尝试一切
- firebase - 如何从 Firestore 导出安全和索引规则?
- c - C中的结构。未知类型名称,
- android - 是否所有设备都支持 OpenGL?