【发布时间】:2018-02-07 17:32:39
【问题描述】:
我有两个文件 file1 和 file2,我想根据第一列(即 ID)删除不匹配的行
文件1
ID,NAME,ADDRESS
11,PP,LONDON
12,SS,BERLIN
13,QQ,FRANCE
14,LL,JAPAN
文件2
ID,NAME,ADDRESS
11,PP,LONDON
12,SS,BERLIN
13,QQ,FRANCE
16,WW,DUBAI
我想删除行
From File1
14,LL,JAPAN
From File2
16,WW,DUBAI
使用 DIFF 命令我可以归档,但我想删除这些行。
还使用 AWK,我可以使用以下命令将这些行重定向到另一个文件。
awk 'FNR==NR{a[$1];next};!($1 in a)' File1 File2 > File3
但是不知道怎么删除。
我们可以这样做吗?
Using sed -id 's/AWK OUTPUT/g' File1
谢谢
【问题讨论】:
-
文件排序了吗?
-
我现在可以使用 sed 和 awk 删除行:sed -i '/'
awk 'FNR==NR{a[$1];next};!($1 in a)' file2 file1'/d' file1 -
不@Allan,文件未排序。
-
之前尝试了 2 个小样本文件并且它有效,但是当我尝试具有 50K 记录的大文件时出现错误:sed -i '/'
awk 'FNR==NR{a[$1];next};!($1 in a)' File2 File1'/d' File1 -bash: /usr /bin/sed: 参数列表太长