比较两个文件并返回真或假值

Rin*_*ael 4 awk text-processing

我有两个文件,一列。
如果两个文件中的第一行相同,则打印 1,否则打印 0。

file1

M
A
A
M
Run Code Online (Sandbox Code Playgroud)

file2

M
M
A
A
Run Code Online (Sandbox Code Playgroud)

output

1
0
1
0
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我展示一个可以做到这一点的 awk 脚本吗?

cuo*_*glm 5

尝试这个:

$ awk '!NF{next} FNR==NR{a[FNR]=$1;next};{print $1==a[FNR]  ? 1 : 0}' file1 file2
1
0
1
0
Run Code Online (Sandbox Code Playgroud)

解释

  • !NF{next}: 我们不需要空行,跳过它。
  • FNR==NR{a[FNR]=$1;next}: 在处理时file1,我们将它的第一个字段保存到关联数组,索引是行号。
  • {print $1==a[FNR] ? 1 : 0}: 在处理时file2,我们检查第一个字段值是否等于对应的file1值,该值保存在关联数组中a。如果是打印 1 否则打印 0。