从一个文件中读取数字,并使用awk脚本在另一个文件中搜索它们

时间:2013-07-07 10:43:24

标签: awk

我有2个文件,a.txt和b.txt,它们都由数字组成,每行一个。我要做的是从a.txt中读取每个数字,然后在b.txt中搜索它。这是我写的awk脚本文件,我可以像这样执行这个search.awk文件,

awk -f search.awk a.txt 

但是如何搜索b.txt中的每个数字?

#!/bin/awk -f

{
    print $1
    # how to search for $1 in b.txt?
}

更新

如果不仅要搜索 1 文件,在目录中有多个文件要搜索a.txt中的每个数字?我的意思是,在a_dir/*中搜索a.txt中每个数字的所有文件?

2 个答案:

答案 0 :(得分:3)

a.txt中的行存入数组并打印数组中出现的b.txt

awk 'NR == FNR{a[$0]; next} $0 in a' a.txt b.txt 

编辑: 如果要搜索多个文件,则此版本将打印匹配文件名和行

awk 'NR == FNR{a[$0]; next} $0 in a{print FILENAME, $0}' a.txt b.txt c.txt

答案 1 :(得分:2)

的代码示例:

awk 'NR==FNR {a[$1]=$1;next} $1==a[$1] && $1!=""' a.txt b.txt

$ cat a.txt
1
3
5
7
9
11
13

$ cat b.txt
1
4
7
10
13

$ cat c.txt
3
11

$ awk 'NR==FNR {a[$1]=$1;next} $1==a[$1] && $1!=""' a.txt b.txt c.txt
1
7
13
3
11