linux - 查找列中唯一值的数量

标签 linux

我想知道使用 Linux 命令的列中唯一值的计数。该列具有如下所示的值(数据是根据以前的数据进行编辑的)。我需要忽略最后的 .M、.Q 和 .A,只计算植物的唯一数量

"series_id":"ELEC.PLANT.CONS_EG_BTU.56855-ALL-ALL.M"
"series_id":"ELEC.PLANT.CONS_EG_BTU.56855-ALL-ALL.Q"
"series_id":"ELEC.PLANT.CONS_EG_BTU.56855-WND-ALL.A"
"series_id":"ELEC.PLANT.CONS_EG_BTU.56868-LFG-ALL.Q"
"series_id":"ELEC.PLANT.CONS_EG_BTU.56868-LFG-ALL.A"
"series_id":"ELEC.PLANT.CONS_EG_BTU.56841-WND-WT.Q"
"series_id":"ELEC.CONS_TOT.COW-GA-2.M"
"series_id":"ELEC.CONS_TOT.COW-GA-94.M"

我已经尝试过这段代码,但我无法避免这些后缀

cat ELEC.txt | grep 'series_id' | cut -d, -f1 | wc -l

对于上面的示例,预期计数应为 6,但我得到 8

最佳答案

这应该可以完成工作:

grep -Po "ELEC.PLANT.*" FILE | cut -d. -f -4 | sort | uniq -c

  1. 您首先 grep 查找“ELEC.PLANT。”部分
  2. 删除.Q、A、M
  3. 删除重复项并使用 sort | uniq -c 进行计数

编辑: 对于新数据,只需执行以下操作: grep -Po "ELEC.*" FILE | cut -d. -f -4 | sort | uniq -c

关于linux - 查找列中唯一值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56018876/

相关文章:

linux - 在这种情况下如何使用 shell、bash 或 sed 命令

linux - Git - SSH - 主机 : How can I delegate different IPs to remote origin, 取决于每次工作的内容?

linux - 打开多个终端选项卡,执行命令并继续处理它们

php - 似乎 Cron 工作在停止后仍在工作

c++ - 对 `main' 的 undefined reference ,当 main 存在时

c - 在c中初始化数组,格式为 `int a[3]={0,};`

Linux CPU 使用工具

linux - 如何删除 BASH 中的一行?

linux - Varnish 无法以 : failed to map segment from shared object: Operation not permitted 开头

c - 在连接失败时重用套接字描述符