比较两个文件并返回 true 或 false 值

比较两个文件并返回 true 或 false 值

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

file1:

M
A
A
M

file2:

M
M
A
A

output:

1
0
1
0

谁能给我看一个可以做到这一点的 awk 脚本吗?

答案1

尝试这个:

$ awk '!NF{next} FNR==NR{a[FNR]=$1;next};{print $1==a[FNR]  ? 1 : 0}' file1 file2
1
0
1
0

解释

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

答案2

paste file1 file2 | while read a b; do [[ $a != "$b" ]]; echo $?; done

[[命令成功时返回 0 状态,失败时返回 1。

相关内容