linux - 匹配多列并打印二进制结果

标签 linux sed awk

我想打印 file1 的二进制结果是 file2 中的值匹配:

文件1:

a b c d
1 2 9 4
5 6 7 8
4 3 0 1
8 9 6 5

文件2:

x
1
2
3
4
5
6
7
8

预期结果:

a b c d
1 1 0 1
1 1 1 1
1 1 0 1
1 0 1 1

通过将 file2 中的列 x 与所有列 abc 进行匹配file1 中的 d。我想在 Result 文件中打印二进制结果。

最佳答案

这样就可以了:

awk 'FNR==NR{if(NR>1)a[$1];next}FNR>1{for(i=1;i<=NF;i++)$i in a?$i=1:$i=0}1' f2 f1
a b c d
1 1 0 1
1 1 1 1
1 1 0 1
1 0 1 1

f2f1 分别是您的 file2file1

关于linux - 匹配多列并打印二进制结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17209634/

相关文章:

git - 如何在差异期间使用 git filter.gitignore.clean 过滤两个分支

linux - sed命令在多行搜索后插入多行字符串

python - 如何合并行和添加列值?

linux - 文件格式 : Confusion using awk NR Variable

linux - Bash 等到完成作业并执行下一个命令

linux - 保持 gtk 窗口固定在屏幕上

linux - 如何在 polyml 解释器中添加 readline 支持?

c - 从 C 代码项目中只提取所需的函数?

bash - 在字符串上运行 sed,使用 "echo"+ "pipe"优于 "<<<"的好处

linux - 将 awk 输出作为输入传递给另一个脚本