文本处理:比较两个已排序的文件,并根据第二列排除不同的行

时间:2018-05-15 16:26:09

标签: shell awk text-processing

的fileA

232 com.path.class1
32  com.path.class2
123 com.path.class3

FILEB

675 com.path.class6
567 com.path.class2
657 com.path.class1

noLines(fileA)> noLines(FILEB)

我想从fileA中删除fileB中不存在第2列(包含类的列)的所有行

2 个答案:

答案 0 :(得分:2)

关注awk可能对您有帮助。

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

如果您想将输出保存到Input_file,则文件A本身也会将> temp_file && mv temp_file fileA附加到上面的代码中。

答案 1 :(得分:1)

with join(期望文件被排序;所以排序)

$ join -j2 -o1.1,1.2 <(sort -k2 file1) <(sort -k2 file2)

232 com.path.class1
32 com.path.class2