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 脚本吗?
尝试这个:
$ 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。