我有两个文件file1是一个查询文件,file2是一种字典,每列1列.我想检查file1的元素是否存在于file2中,它应该给出1 else 0作为输出.
这就是我在做的事情:
#!/bin/bash
for i in `cat file1 `
do
cat file2 | awk '{ if ($1=="'$i'") print 1 ; else 0 }'>>output
done
Run Code Online (Sandbox Code Playgroud)
请提出改进命令的建议
谢谢
看起来您的整个脚本简化为:
fgrep -f file1 file2 > output
Run Code Online (Sandbox Code Playgroud)
我应该补充说,如果你没有fgrep可用,grep -F通常是相同的.
fgrep(或者,通常情况下grep -F)通常使用Aho-Corisack字符串匹配算法实现,因此它通常比grep重复使用快得多.要记住的一件事(这里并不完全清楚,但似乎很可能)是fin fgrep代表fixed- 它很快就匹配了许多替代固定字符串中的任何一个,但它根本不与RE相关 -每个字符串都是字面上匹配的.
如果你需要RE匹配,你仍然可以使用-fgrep选项,所以你会得到:
grep -f file1 file2 > output
Run Code Online (Sandbox Code Playgroud)