预期效果如下:
>>> 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 工具可以实现这个功能,懒人不想造轮子。
1
yanqiyu 4 小时 17 分钟前
虽然没有这么好看,但是 uniq -c 就可以统计出现次数了,之后再按照要求重新排版应该就可以了
|
2
GPLer 4 小时 16 分钟前 via Android 1
sort + uniq + awk 组合实现
cat 1.txt | sort | uniq -c | sort -nr | awk 'BEGIN {print "Line\t| Times"} {printf "%s\t| %d\n", $2, $1}' 话说这种需求大模型确实秒了( |
3
GPLer 4 小时 14 分钟前 via Android
unix 哲学更推荐用多个命令组合来完成某个需求,如果真的需要**一个**工具,可以考虑包装个脚本。(
|
4
NessajCN 4 小时 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}") |