linux - 如何在新列中打印 KSH 中 1 列的总数?
问题描述
我试图在 txt 文件中添加一个带有总数的新列而不删除其他列,已经在 stackoverflow 中找到了一个帖子但是
cut -f1 test.txt | uniq -c | join -2 2 test.txt -
对我不起作用,帖子中的其他选项也没有,我的意思是在那篇帖子中没有回答我的问题,有人可以帮忙吗?
测试.txt:
Apple_1 1 300
Apple_2 1 500
Apple_2 500 1500
Apple_2 1500 2450
Apple_3 1 1250
Apple_3 1250 2000
预期输出:
Apple_1 1 300 1
Apple_2 1 500 3
Apple_2 500 1500 3
Apple_2 1500 2450 3
Apple_3 1 1250 2
Apple_3 1250 2000 2
已经尝试过一些正则表达式和 awk,例如:
awk '{count[$1]++} END {for (word in count) print word, count[word]}' file
awk '{ print $0 "\t" ++count[$1] }'
解决方案
您需要浏览文件两次,一次计算计数,第二次打印附加计数的所有行。
awk 'FNR == NR {count[$1]++; next}
{print $0 "\t" count[$1]}' file file
FNR == NR
读取第一个文件时为真。
推荐阅读
- azure - Zip 部署失败,出现“未处理的异常。System.IO.IOException:超出磁盘配额”
- javascript - 如何使用 Yup 从类型推断模式?
- javascript - 在reactJS中单击按钮添加新用户
- azure - CloudBlob 上的 OpenReadAsync 返回空流
- android - ViewModel 在屏幕旋转时不保留数据
- python - 在 IDLE 中写长指令
- r - 为支持向量机绘制 ROC
- charts - 更改谷歌时间线图表行中的背景颜色
- android - 如何在自身内部获取 WebView 打开 URL?
- c# - 反射不会触发参数化构造函数c#