如何删除第一个值不出现在另一个文件中的一个文件的行?

时间:2015-12-18 17:31:33

标签: linux shell

我有一个包含整数列的文件 - >文件1

1 2 3
2 2 2
3 2 1
3 1 4
4 1 4
5 0 0

我有另一个文件,其中包含一列(唯一)整数 - > file2的

1
3
4

两个文件都非常大。我想删除第一列值不会出现在File2中的File1行。

1 2 3
3 2 1
3 1 4
4 1 4

1 个答案:

答案 0 :(得分:1)

你可以通过File1的行循环,从每行中提取第一个数字,并尝试找到与File2中的数字完全匹配。

#!/bin/bash

IFS=$'\n'
re='^[0-9]+$'

for i in $( cat File1 ); do
    num=$( echo $i | awk '{print $1}' )
    grp=$( grep "^${num}\b" File2 )
    if [[ $grp =~ $re ]] ; then
        echo $i
    fi
done

您可以将此脚本的输出保存在临时文件中,并使用它来覆盖原始File1。