我想知道使用 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
- 您首先 grep 查找“ELEC.PLANT。”部分
- 删除.Q、A、M
- 删除重复项并使用
sort | uniq -c
进行计数
编辑:
对于新数据,只需执行以下操作:
grep -Po "ELEC.*" FILE | cut -d. -f -4 | sort | uniq -c
关于linux - 查找列中唯一值的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56018876/