预期效果如下:

>>> cat 1.txt                                                                                                                                                                                
user_A
user_B
user_C
user_A
user_B
user_A

>>> cat 1.txt | some_command
Line	| Times
------------------
user_A	| 3
user_B	| 2
user_C	| 1

是否存在已知的一个 Linux 工具可以实现这个功能,懒人不想造轮子。

举报· 618 次点击
登录 注册 站外分享
5 条回复  
yanqiyu 小成 3 小时前
虽然没有这么好看,但是 uniq -c 就可以统计出现次数了,之后再按照要求重新排版应该就可以了
GPLer 小成 3 小时前
sort + uniq + awk 组合实现 cat 1.txt | sort | uniq -c | sort -nr | awk 'BEGIN {print "Line\t| Times"} {printf "%s\t| %d\n", $2, $1}' 话说这种需求大模型确实秒了(
GPLer 小成 3 小时前
unix 哲学更推荐用多个命令组合来完成某个需求,如果真的需要**一个**工具,可以考虑包装个脚本。(
NessajCN 小成 2 小时前
这类需求我一般直接搓个 python 脚本 d = {} with open(sys.argv[1]) as fp: for l in fp.readlines(): k = l.strip("\n") if not k in d: d[k]=1 else: d[k]+=1 print("Line\t| Times") print("-------------") for c,t in d.items(): print(f"{c}\t| {t}")
Tardis07 楼主 初学 2 小时前
@yanqiyu 非常感谢,其实外观倒是无所谓,你的回复让我想起来之前 Linux Shell 去重的操作。目前`xxx | sort | uniq -c`就足以满足我的需求了,非常感谢。
返回顶部