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

从一个文件中读取数字,并使用awk脚本在另一个文件中搜索数字,awk,Awk,我有两个文件,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.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中的每个数字?

代码示例:


$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 代码示例:


$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
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

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

向上投票,但如果要搜索多个文件怎么办?请看我的编辑。idomatic awk解决方案[几乎]是@1_CR发布的,这一个有一些警告。例如,它将从b.txt等打印任何空行,这几乎肯定是不可取的。另外,就像《法戈》中的史蒂夫·布塞米斯(Steve Buscemis)一样,它只是看起来有点滑稽——。@EdMorton你完全正确,这些空行很难看:)我需要不必要的代码来避免这种情况。谢谢。升级,但是如果要搜索多个文件怎么办?请看我的编辑。idomatic awk解决方案[几乎]是@1_CR发布的,这一个有一些警告。例如,它将从b.txt等打印任何空行,这几乎肯定是不可取的。另外,就像《法戈》中的史蒂夫·布塞米斯(Steve Buscemis)一样,它只是看起来有点滑稽——。@EdMorton你完全正确,这些空行很难看:)我需要不必要的代码来避免这种情况。谢谢。不需要
++
,只需将其保留为
a[$0]+1.不需要
++
,只需将其保留为
a[$0]+1尽管如此。