我有两个文件,其中一栏。
如果两个文件中的第一行相同,则打印 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。