shell 根据文件1,删除文件2中的内容

方法1,如果文件之间存在包含,用grep
grep -vFf f1 f2 即可 保留f2中多的,反之,f1多的
$more 1

a,1
n,2
c,3
w,4
v3,5
$more 3

1
3
$grep -vFf 3 1 结果把v3项误删,用-w 完全匹配 可避免误删,如下

n,2
w,4
grep -vwFf 3 1
n,2
w,4
v3,5
方法2,如果是多列,根据指定列,删除,用awk
more 1 2
a,1
n,2
c,3
w,4
v,5
1,a,f
3,4,f
4,5,g
awk -F”,” ‘NR==FNR {a[1]} NR>FNR&&!(2 in a)’ 1 2
3,4,f
4,5,g
awk -F”,” ‘NR==FNR {a[1]} NR>FNR&&!(2 in a)’ 2 1
n,2
v,5
这里写图片描述
理解起来是,用文件的指定列作为数组,比较另一文件的指定列,如果不包含,就输出。
如果文件1的第二列,不在文件2的第一列组成的数组([a,1 c,3 w,4])中,
就输出(n,2 和 v,5)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值