我用这个命令比较两个文件
comm -13 file1 file2
它工作得很好,并告诉我差异。但我还想向我展示行号(在第二个文件中唯一的行)。文件 1:
a
d
e
f
g
文件2:a
b
c
d
e
我愿意: comm -13 file1 file2
输出b
c
但我需要 b 和 c 在 file2 中的行号,所需的输出:2
3
最佳答案
使用 awk:
$ awk 'NR==FNR{a[$0];next}!($0 in a){print FNR}' file1 file2
输出:2
3
编辑:如 OP 中所述,comm
当文件 file2
时行为不同有重复。下面的解决方案应该解决这个问题(见评论并感谢@EdMorton):$ awk '
NR==FNR {
a[$0]++
next
}
{
if(!($0 in a)||a[$0]<=0)
print FNR
else a[$0]--
}' file1 file2
现在输出( file2
有重复条目 d
其中 FNR==5
):2
3
5
希望不会有更多的陷阱等待...
关于bash - 带有 comm 命令的行号。是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63978033/