我正在尝试使用包含大约 5000 个模式(以行间隔)的 .txt 文件来搜索另一个包含 18000 行的文件以查找任何匹配项。到目前为止,我已经尝试了在互联网上可以找到的各种形式的 grep 和 awk,但它仍然不起作用,所以我完全被难住了。
这是每个文件中的一些文本。
模式.txt
rs2622590
rs925489
rs2798334
rs6801957
rs6801957
rs13137008
rs3807989
rs10850409
rs2798269
rs549182
没有多余的空格或任何东西。
文件.txt
snpid hg18chr bp a1 a2 zscore pval CEUmaf
rs3131972 1 742584 A G 0.289 0.7726 .
rs3131969 1 744045 A G 0.393 0.6946 .
rs3131967 1 744197 T C 0.443 0.658 .
rs1048488 1 750775 T C -0.289 0.7726 .
rs12562034 1 758311 A G -1.552 0.1207 0.09167
rs4040617 1 769185 A G -0.414 0.6786 0.875
rs4970383 1 828418 A C 0.214 0.8303 .
rs4475691 1 836671 T C -0.604 0.5461 .
rs1806509 1 843817 A C -0.262 0.7933 .
file.txt是直接从med目录下载的。
我对 UNIX 很陌生,所以任何帮助都会很棒!
这是从 stackoverflow 复制的。我已经尝试了推荐的每一项,但输出仍然是空白。我的文本文件中是否可能缺少语法问题或某些内容?
PS 我尝试过的事情:
grep -Fw -f Pattern.txt File.txt
fgrep -f Pattern.txt File.txt
FILENAME=$1
awk '{kount++;print $0}' $FILENAME | fgrep -f - Pattern.txt
awk 'NR==FNR{pats[$0]; next} $2 in pats' Pattern.txt File.txt
答案1
用 GNU grep 试试这个:
grep -f Pattern.txt File.txt