gpt4 book ai didi

bash - 带有 comm 命令的行号。是否可以?

转载 作者:行者123 更新时间:2023-12-03 23:44:10 28 4
gpt4 key购买 nike

我用这个命令比较两个文件

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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com