比较两个文件脚本并找到不匹配的数据

时间:2014-09-09 06:02:17

标签: linux bash shell awk

我有两个.txt文件,其数据以

格式存储

的1.txt

ASF001-AS-ST73U12
ASF001-AS-ST92U14
ASF001-AS-ST105U33
ASF001-AS-ST107U20

2.txt

ASF001-AS-ST121U21
ASF001-AS-ST130U14
ASF001-AS-ST73U12
ASF001-AS-ST92U14

` 我需要找到 1.txt 中但不在 2.txt 中的文件。

我尝试使用

diff -a --suppress-common-lines -y 1.txt 2.txt > finaloutput

但它无效

2 个答案:

答案 0 :(得分:1)

您可以在此使用comm而不是差异:

comm -23 <(sort 1.txt) <(sort 2.txt)
ASF001-AS-ST105U33
ASF001-AS-ST107U20

或者此awk也可以使用:

awk 'FNR==NR {a[$1];next} $1 in a{delete a[$1]} END {for (i in a) print i}' 1.txt 2.txt
ASF001-AS-ST107U20
ASF001-AS-ST105U33

答案 1 :(得分:0)

一个相对简单的bash脚本可以满足您的需求:

#!/bin/bash

while read line || test -n "$line"; do 
    grep -q $line "$2" || echo "$line"
done < "$1"

exit 0

<强>输出:

$ ./uniquef12.sh dat/1.txt dat/2.txt
ASF001-AS-ST105U33
ASF001-AS-ST107U20