python - 比较 N 个文件的第一列,如果找到匹配,则打印剩余文件的第一列和第二列
问题描述
我有许多文件,每个文件都有两列,并且想将这些文件与第一列进行比较。如果在所有文件中找到匹配项,则打印剩余文件的第一个文件和第二列。
输入示例
文件 1
apple tree
great see
see apple
tree bee
make change
文件 2
great 2
see 3
tree 4
make 5
文件 3
apple 10
great 9
see 8
tree 7
预期产出
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 '
!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
推荐阅读
- javascript - 我可以使用 fs 中的 createReadStream() 和 base64 图像而不是路径吗?
- ag-grid - Ag-Grid:使用 css 添加列标题图标,破坏排序功能
- c# - c# 到 Node.js - 刷新命名管道写入缓冲区不会结束流
- python - 如何使用 Sympy (Python) 在 for 循环中生成符号变量
- unity3d - Unity Streaming-assets 内容未在 Oculus Quest/Go 中读取
- node.js - 获取“函数的返回值”节点js用作函数外的变量
- python-3.x - 对于函数 max3bad.. 提供一个会产生错误输出的输入
- android - LayoutParams 不适用
- javascript - 如何在 Total.js 平台上保存和检索来自“RESTBuilder”的响应
- python - 如何在访问私有 blob 容器时修复“AzureMissingResourceHttpError。ErrorCode: ResourceNotFound” - python?