Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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
Python 比较N个文件的第一列,如果找到匹配项,则打印第一列文件和剩余文件的第二列_Python_Perl_Awk - Fatal编程技术网

Python 比较N个文件的第一列,如果找到匹配项,则打印第一列文件和剩余文件的第二列

Python 比较N个文件的第一列,如果找到匹配项,则打印第一列文件和剩余文件的第二列,python,perl,awk,Python,Perl,Awk,我有很多文件,每个文件有两列,我想把这些文件和第一列进行比较。如果在所有文件中找到匹配项,则打印第一个文件和剩余文件的第二列 输入示例 文件1 文件2 文件3 预期产量 great see 2 9 see apple 3 8 tree bee 4 7 我只能处理两个文件。使用 awk 'FNR==NR {a[$1]=$0; next}; $1 in a {print a[$1]}' file1 file2 如果所有

我有很多文件,每个文件有两列,我想把这些文件和第一列进行比较。如果在所有文件中找到匹配项,则打印第一个文件和剩余文件的第二列

输入示例

文件1 文件2 文件3 预期产量

 great    see     2     9
 see      apple   3     8
 tree     bee     4     7
我只能处理两个文件。使用

 awk  'FNR==NR {a[$1]=$0; next}; $1 in a {print a[$1]}' file1 file2

如果所有文件中的第一列都包含唯一值,则应执行以下操作:

$ awk '{a[$1]=a[$1]
"\t"
$2} ++n[$1]==
3
{print $1 a[$1]}' file1 file2 file3
great   see     2       9
see     apple   3       8
tree    bee     4       7

如果所有文件中的第一列都包含唯一值,则应执行以下操作:

$ awk '{a[$1]=a[$1]
"\t"
$2} ++n[$1]==
3
{print $1 a[$1]}' file1 file2 file3
great   see     2       9
see     apple   3       8
tree    bee     4       7
使用:

$join使用:


$join请您尝试以下内容(这也将考虑第一个字段的顺序,它们将以哪个顺序出现,它们将进入输出)

awk'
!c[$1]++{
d[++计数]=$1
}
{
a[$1]++
b[$1]=(b[$1]?b[$1]OFS:)$NF
}
结束{

对于(i=1;i请尝试以下内容(这也将考虑第一个字段的顺序,它们将在输出中出现的顺序)

awk'
!c[$1]++{
d[++计数]=$1
}
{
a[$1]++
b[$1]=(b[$1]?b[$1]OFS:)$NF
}
结束{
对于(i=1;i
 awk  'FNR==NR {a[$1]=$0; next}; $1 in a {print a[$1]}' file1 file2
$ awk '{a[$1]=a[$1]
"\t"
$2} ++n[$1]==
3
{print $1 a[$1]}' file1 file2 file3
great   see     2       9
see     apple   3       8
tree    bee     4       7
$ join <(sort file1) <(sort file2) | join - <(sort file3)
great see 2 9
see apple 3 8
tree bee 4 7
awk '
!c[$1]++{
  d[++count]=$1
}
{
  a[$1]++
  b[$1]=(b[$1]?b[$1] OFS:"")$NF
}
END{
  for(i=1;i<=count;i++){
    if(a[d[i]]==3){
       print d[i],b[d[i]]
    }
  }
}
'  file1 file2 file3  | column -t