Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 匹配两个文件中的行的步骤_Bash_Perl_Awk_Grep - Fatal编程技术网

Bash 匹配两个文件中的行的步骤

Bash 匹配两个文件中的行的步骤,bash,perl,awk,grep,Bash,Perl,Awk,Grep,我有两个以制表符分隔的文件: 归档 chrM 150 chrM 5581 chr1 717485 chr1 719097 150 . T C 7807.77 PASS AC=2;AF=1.00;AN=2;DP=247;Dels=0.00;FS=0.000;HaplotypeScore=4.7038;MLEAC=2;MLEAF=1.00;MQ=51.13;MQ0=0;QD=31.61;VQSLOD=3.92;culprit=MQ;EFF=intergen

我有两个以制表符分隔的文件:

归档

chrM    150
chrM    5581
chr1    717485
chr1    719097
150 .   T   C   7807.77 PASS    AC=2;AF=1.00;AN=2;DP=247;Dels=0.00;FS=0.000;HaplotypeScore=4.7038;MLEAC=2;MLEAF=1.00;MQ=51.13;MQ0=0;QD=31.61;VQSLOD=3.92;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||) GT:AD:DP:GQ:PL  1/1:0,247:247:99:7836,727,0
chrM    195 .   C   T   5638.77 PASS    AC=2;AF=1.00;AN=2;DP=176;Dels=0.00;FS=0.000;HaplotypeScore=2.5193;MLEAC=2;MLEAF=1.00;MQ=42.23;MQ0=0;QD=32.04;VQSLOD=3.62;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||) GT:AD:DP:GQ:PL  1/1:0,176:176:99:5667,517,0
chrM    199 rs72619362  T   C   5058.77 PASS    AC=2;AF=1.00;AN=2;DB;DP=169;Dels=0.00;FS=0.000;HaplotypeScore=0.7887;MLEAC=2;MLEAF=1.00;MQ=39.55;MQ0=0;QD=29.93;VQSLOD=4.68;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||)  GT:AD:DP:GQ:PL  1/1:0,169:169:99:5087,472,0
chrM    204 rs3135032   T   C   4110.77 PASS    AC=2;AF=1.00;AN=2;DB;DP=168;Dels=0.00;FS=0.000;HaplotypeScore=0.0000;MLEAC=2;MLEAF=1.00;MQ=39.77;MQ0=0;QD=24.47;VQSLOD=2.90;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||)  GT:AD:DP:GQ:PL  1/1:0,168:168:99:4139,435,0
chrM    217 rs41531144  T   C   4589.77 PASS    AC=2;AF=1.00;AN=2;DB;DP=147;Dels=0.00;FS=0.000;HaplotypeScore=0.0000;MLEAC=2;MLEAF=1.00;MQ=42.78;MQ0=0;QD=31.22;VQSLOD=4.51;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||)  GT:AD:DP:GQ:PL  1/1:0,147:147:99:4618,418,0
文件B

chrM    150
chrX    5581
chr1    717485
chr2    719097
150 .   T   C   7807.77 PASS    AC=2;AF=1.00;AN=2;DP=247;Dels=0.00;FS=0.000;HaplotypeScore=4.7038;MLEAC=2;MLEAF=1.00;MQ=51.13;MQ0=0;QD=31.61;VQSLOD=3.92;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||) GT:AD:DP:GQ:PL  1/1:0,247:247:99:7836,727,0
chrM    195 .   C   T   5638.77 PASS    AC=2;AF=1.00;AN=2;DP=176;Dels=0.00;FS=0.000;HaplotypeScore=2.5193;MLEAC=2;MLEAF=1.00;MQ=42.23;MQ0=0;QD=32.04;VQSLOD=3.62;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||) GT:AD:DP:GQ:PL  1/1:0,176:176:99:5667,517,0
chrM    199 rs72619362  T   C   5058.77 PASS    AC=2;AF=1.00;AN=2;DB;DP=169;Dels=0.00;FS=0.000;HaplotypeScore=0.7887;MLEAC=2;MLEAF=1.00;MQ=39.55;MQ0=0;QD=29.93;VQSLOD=4.68;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||)  GT:AD:DP:GQ:PL  1/1:0,169:169:99:5087,472,0
chrM    205 rs3135032   T   C   4110.77 PASS    AC=2;AF=1.00;AN=2;DB;DP=168;Dels=0.00;FS=0.000;HaplotypeScore=0.0000;MLEAC=2;MLEAF=1.00;MQ=39.77;MQ0=0;QD=24.47;VQSLOD=2.90;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||)  GT:AD:DP:GQ:PL  1/1:0,168:168:99:4139,435,0
chrM    214 rs41531144  T   C   4589.77 PASS    AC=2;AF=1.00;AN=2;DB;DP=147;Dels=0.00;FS=0.000;HaplotypeScore=0.0000;MLEAC=2;MLEAF=1.00;MQ=42.78;MQ0=0;QD=31.22;VQSLOD=4.51;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||)  GT:AD:DP:GQ:PL  1/1:0,147:147:99:4618,418,0
应仅打印两个文件中存在的行:

   chrM 150

    chr1    717485
第二个问题如果两个文件中都有多个列,如何仍然匹配两个文件的前两列,如果匹配,则打印第一个文件中的行。 样本数据

归档

chrM    150
chrM    5581
chr1    717485
chr1    719097
150 .   T   C   7807.77 PASS    AC=2;AF=1.00;AN=2;DP=247;Dels=0.00;FS=0.000;HaplotypeScore=4.7038;MLEAC=2;MLEAF=1.00;MQ=51.13;MQ0=0;QD=31.61;VQSLOD=3.92;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||) GT:AD:DP:GQ:PL  1/1:0,247:247:99:7836,727,0
chrM    195 .   C   T   5638.77 PASS    AC=2;AF=1.00;AN=2;DP=176;Dels=0.00;FS=0.000;HaplotypeScore=2.5193;MLEAC=2;MLEAF=1.00;MQ=42.23;MQ0=0;QD=32.04;VQSLOD=3.62;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||) GT:AD:DP:GQ:PL  1/1:0,176:176:99:5667,517,0
chrM    199 rs72619362  T   C   5058.77 PASS    AC=2;AF=1.00;AN=2;DB;DP=169;Dels=0.00;FS=0.000;HaplotypeScore=0.7887;MLEAC=2;MLEAF=1.00;MQ=39.55;MQ0=0;QD=29.93;VQSLOD=4.68;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||)  GT:AD:DP:GQ:PL  1/1:0,169:169:99:5087,472,0
chrM    204 rs3135032   T   C   4110.77 PASS    AC=2;AF=1.00;AN=2;DB;DP=168;Dels=0.00;FS=0.000;HaplotypeScore=0.0000;MLEAC=2;MLEAF=1.00;MQ=39.77;MQ0=0;QD=24.47;VQSLOD=2.90;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||)  GT:AD:DP:GQ:PL  1/1:0,168:168:99:4139,435,0
chrM    217 rs41531144  T   C   4589.77 PASS    AC=2;AF=1.00;AN=2;DB;DP=147;Dels=0.00;FS=0.000;HaplotypeScore=0.0000;MLEAC=2;MLEAF=1.00;MQ=42.78;MQ0=0;QD=31.22;VQSLOD=4.51;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||)  GT:AD:DP:GQ:PL  1/1:0,147:147:99:4618,418,0
文件B

chrM    150
chrX    5581
chr1    717485
chr2    719097
150 .   T   C   7807.77 PASS    AC=2;AF=1.00;AN=2;DP=247;Dels=0.00;FS=0.000;HaplotypeScore=4.7038;MLEAC=2;MLEAF=1.00;MQ=51.13;MQ0=0;QD=31.61;VQSLOD=3.92;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||) GT:AD:DP:GQ:PL  1/1:0,247:247:99:7836,727,0
chrM    195 .   C   T   5638.77 PASS    AC=2;AF=1.00;AN=2;DP=176;Dels=0.00;FS=0.000;HaplotypeScore=2.5193;MLEAC=2;MLEAF=1.00;MQ=42.23;MQ0=0;QD=32.04;VQSLOD=3.62;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||) GT:AD:DP:GQ:PL  1/1:0,176:176:99:5667,517,0
chrM    199 rs72619362  T   C   5058.77 PASS    AC=2;AF=1.00;AN=2;DB;DP=169;Dels=0.00;FS=0.000;HaplotypeScore=0.7887;MLEAC=2;MLEAF=1.00;MQ=39.55;MQ0=0;QD=29.93;VQSLOD=4.68;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||)  GT:AD:DP:GQ:PL  1/1:0,169:169:99:5087,472,0
chrM    205 rs3135032   T   C   4110.77 PASS    AC=2;AF=1.00;AN=2;DB;DP=168;Dels=0.00;FS=0.000;HaplotypeScore=0.0000;MLEAC=2;MLEAF=1.00;MQ=39.77;MQ0=0;QD=24.47;VQSLOD=2.90;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||)  GT:AD:DP:GQ:PL  1/1:0,168:168:99:4139,435,0
chrM    214 rs41531144  T   C   4589.77 PASS    AC=2;AF=1.00;AN=2;DB;DP=147;Dels=0.00;FS=0.000;HaplotypeScore=0.0000;MLEAC=2;MLEAF=1.00;MQ=42.78;MQ0=0;QD=31.22;VQSLOD=4.51;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||)  GT:AD:DP:GQ:PL  1/1:0,147:147:99:4618,418,0
输出

150 .   T   C   7807.77 PASS    AC=2;AF=1.00;AN=2;DP=247;Dels=0.00;FS=0.000;HaplotypeScore=4.7038;MLEAC=2;MLEAF=1.00;MQ=51.13;MQ0=0;QD=31.61;VQSLOD=3.92;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||) GT:AD:DP:GQ:PL  1/1:0,247:247:99:7836,727,0
chrM    195 .   C   T   5638.77 PASS    AC=2;AF=1.00;AN=2;DP=176;Dels=0.00;FS=0.000;HaplotypeScore=2.5193;MLEAC=2;MLEAF=1.00;MQ=42.23;MQ0=0;QD=32.04;VQSLOD=3.62;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||) GT:AD:DP:GQ:PL  1/1:0,176:176:99:5667,517,0
chrM    199 rs72619362  T   C   5058.77 PASS    AC=2;AF=1.00;AN=2;DB;DP=169;Dels=0.00;FS=0.000;HaplotypeScore=0.7887;MLEAC=2;MLEAF=1.00;MQ=39.55;MQ0=0;QD=29.93;VQSLOD=4.68;culprit=MQ;EFF=intergenic_region(MODIFIER||||||||)  GT:AD:DP:GQ:PL  1/1:0,169:169:99:5087,472,0
谢谢

B
中的文件(
-f
A
中选择一个或多个换行分隔模式:

% grep -f A B   
chrM    150
chr1    717485

grep-f
是。。。但约翰西韦布已经指出了这一点

man grep

-f FILE,--FILE=FILE

从文件中获取模式,每行一个。空文件包含零 模式,因此不匹配任何内容。(-f由 POSIX.)

使用
awk
您还可以执行以下操作:

$ awk 'FNR==NR {a[$0]; next} $0 in a' f1 f2
chrM    150
chr1    717485

更新 如果必须只匹配前两列,则不能再使用
grep
(至少在简单模式下)。此
awk
使其(更新,!):


您可以将其中一个文件读入
%s
散列,其中键是行,使用散列作为查找表循环另一个文件

perl -ne 'BEGIN{local @ARGV=pop; @s{<>} = ()} print if exists $s{$_}' fileA fileB
perl-ne'BEGIN{local@ARGV=pop;@s{}=()}如果存在$s{$}文件a文件b,则打印
开关

  • -n
    :为输入文件中的每一行创建
    while(){…}
    循环
  • -e
    :告诉
    perl
    在命令行上执行代码
还有一个问题,如果我的文件B有多列,那么我应该在上面的命令中进行哪些编辑。@Angelo mmm您能用一些示例数据更新您的问题吗?以便更清楚地了解您的确切含义以及所需的输出。谢谢wrt awk解决方案-只需切换文件顺序,您就不需要将整个文件1存储在内存中并显式地编写打印命令,例如,
awk'NR==FNR{a[$1,$2];next}($1,$2)在'f2 f1
中。