0

我有 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个文件,一个 dir 中有多个文件要搜索 a.txt 中的每个数字怎么办?我的意思是,在所有这些文件中搜索a_dir/*a.txt 中的每个数字?

4

2 回答 2

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
于 2013-07-07T11:09:05.870 回答
2

的代码示例:

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

$猫.txt
1
3
5
7
9
11
13

$猫b.txt
1
4
7
10
13

$猫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
于 2013-07-07T11:04:09.567 回答