我有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中每个数字的所有文件?
答案 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的代码示例:
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