在bash中进行计数和拆分
嗨,伙计们,需要一些关于有什么其他可能的方法来实现以下结果的建议 (之前)在bash中进行计数和拆分,bash,shell,awk,Bash,Shell,Awk,嗨,伙计们,需要一些关于有什么其他可能的方法来实现以下结果的建议 (之前) 02-10-2019名称_AA_xxxxx.txt 2019年10月2日名称_AA_xxxxx.txt 2019年10月2日名称_BB_xxxxx.txt 2019年10月2日名称_BB_xxxxx.txt 2019年10月2日姓名_CC_xxxxx.txt (之后) 02-10-2019名称_AA_xxxxx.txt 2019年10月2日名称_AA_xxxxx.txt 计数:2 2019年10月2日名称_BB_xxx
02-10-2019名称_AA_xxxxx.txt
2019年10月2日名称_AA_xxxxx.txt
2019年10月2日名称_BB_xxxxx.txt
2019年10月2日名称_BB_xxxxx.txt
2019年10月2日姓名_CC_xxxxx.txt
(之后)
02-10-2019名称_AA_xxxxx.txt
2019年10月2日名称_AA_xxxxx.txt
计数:2
2019年10月2日名称_BB_xxxxx.txt
2019年10月2日名称_BB_xxxxx.txt
计数:2
2019年10月2日姓名_CC_xxxxx.txt
计数1
假设
- 请假定所有文件的
都相同名称
- 所有文件名的标识符都是
在实际文件中,每个文件名都有一个名称,实际文件格式是COMPANYNAME\u TYPENAME\u*.txtAA、BB、CC
- TYPENAME将更改
awk
命令,但不确定如何执行该命令
im现在使用的一个快速修复方法是使用cat input.file | grep TYPENAME
作为名称,然后使用cat input.file | grep TYPENAME | wc-l
检查计数
如有任何建议,将不胜感激
PS:由于我不想泄露任何敏感信息,因此我会尽力提供尽可能多的信息 你能试试下面的吗
awk'prev=$2&&count{print“count:”count;count=”“}{count++;prev=$2}END{if(count){print“count:”count}}'输入文件
使用Jnzz更新的输入文件:
awk-F'+|"prev=$3&&count{print“count:”count;count=”“;print”“}{count++;prev=$3;print}END{if(count){print“count:”count}输入文件
输出:
02-10-2019 name_AA_xxxxx.txt
02-10-2019 name_AA_xxxxx.txt
Count : 2
02-10-2019 name_BB_xxxxx.txt
02-10-2019 name_BB_xxxxx.txt
Count : 2
02-10-2019 name_CC_xxxxx.txt
Count : 1
2019年10月2日名称_AA_xxxxx.txt
2019年10月2日名称_AA_xxxxx.txt
计数:2
2019年10月2日名称_BB_xxxxx.txt
2019年10月2日名称_BB_xxxxx.txt
计数:2
2019年10月2日姓名_CC_xxxxx.txt
计数:1
sort input.file | uniq-c | awk'/name.*/{for(i=1;我欢迎来到SO,很好,你提到你已经尝试过grep和WC,请在你的帖子中提及这些努力,然后让我们知道。我已经删除了我的答案,一旦你添加你的努力将撤销它。嗨,谢谢你的帮助,厌倦了运行代码,但是没有得到结果,我也注意到可能没有写问题mo很明显,我会在编辑——对不起,关于GNU awk。RavinderSingh13代码的一个小补充:awk-F'+||u''prev!=$2&&count{print“count:count;count=”“;print”“}{count++;prev=$2;print}END{if(count){print“count:”count}'file
hi@Cyrus谢谢你的输入,我已经编辑了这个问题,使其更清晰,对不起,刚刚开始使用so,通常用于我自己的研究,只是以前从未实际发布过任何问题,所以可能没有发布过clearly@Cyrus嘿,谢谢,它成功了。得到了我需要的,让我理解代码。如果我有专业人士,我会和你聊天问题,如果你不介意的话。@RavinderSingh13:我已经更新了你的答案。没问题。致Jnzz:不客气。您好,谢谢您的输入,我认为uniq有效,我正在研究它,无论如何,我可能没有明确的问题短语,我将编辑该问题
sort input.file | uniq -c | awk '/name.*/{for (i = 1; i <= $1; ++i) print $3; print "Count : "$1}'
sort input.file | uniq -c | awk '/name.*/{for (i = 1; i <= $1; ++i) print $3; if ($1>1) printf "Count : "; else printf "Count "; print $1; }'