gpt4 book ai didi

bash - 比较两个文件并显示字符串重复出现的次数

转载 作者:行者123 更新时间:2023-11-29 09:31:39 27 4
gpt4 key购买 nike

我有两个文件:

ma​​in1.txt

111
222
333

infoFile.txt

111
111
333
444

我需要比较两个文件并显示文件 main1.txt 中的每一行在 infoFile.txt 中重复了多少次,例如:

111:  Total 2
222: Total 0
333: Total 1

我使用了 grep -f main1.txt infoFile.txt | sort |uniq -c 但它会删除 foFile.txt 中不可用的所有字符串,而我需要它来将这些字符串的计数显示为 0。

最佳答案

使用 awk 你可以做:

awk 'FNR==NR{a[$1]++; next} {print $1 ":  Total", ($1 in a)?a[$1]:0}' infoFile.txt main1.txt
111: Total 2
222: Total 0
333: Total 1

工作原理:

  • FNR==NR - 仅对第一个文件执行此 block
  • {a[$1]++; next - 创建一个关联数组a,键为$1,值为递增计数,然后跳到下一条记录
  • {...} - 为第二个输入文件执行此 block
  • for (i in a) 迭代数组a
  • {print $1 ": Total", ($1 in a)?a[$1]:0} - 打印第一个字段,然后是文本 ": Total " 然后如果数组 a 中不存在第二个文件的第一个字段,则打印 0。否则打印数组 a 中的计数。

关于bash - 比较两个文件并显示字符串重复出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32988905/

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