awk 将一个文件的模式匹配到另一个文件

Abh*_*hek 3 linux bash shell awk

要在文件中查找字符串并打印输出的第一列,我们可以使用

grep "foo" file.txt | awk '{print $1}'可以awk单独使用

awk '/foo/ {print $1}' file.txt/sf/answers/1600649291/)。

我想搜索文件中的字符串列表,而不是使用单个字符串 (foo) 作为模式。使用grep,这将是

grep -f file.txt file2.txt | awk '{print $1}' > outFile.txt
Run Code Online (Sandbox Code Playgroud)

awk我可以单独使用做同样的事情吗?

file.txt
abcd
acde
a2rt

file2.txt
1 albcd dhakd kdf
3 abcdbd and
2a bda2rt tert

outFile.txt
3
2a
Run Code Online (Sandbox Code Playgroud)

谢谢!阿布舍克

anu*_*ava 5

等效awk命令如下:

awk 'NR==FNR{a[$1]; next} {for (i in a) if (index($0, i)) print $1}' file.txt file1.txt
Run Code Online (Sandbox Code Playgroud)

输出:

3
2a
Run Code Online (Sandbox Code Playgroud)

由于的选项,使用非正则表达式字符串比较(index($0, i))而不是正则表达式匹配。($0 ~ i)-Fgrep