在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
假设

  • 请假定所有文件的
    名称
    都相同
  • 所有文件名的标识符都是
    AA、BB、CC
    在实际文件中,每个文件名都有一个名称,实际文件格式是COMPANYNAME\u TYPENAME\u*.txt
  • TYPENAME将更改
尝试grep并将其导入WC它会工作,但效率不高,我无法重用代码,做了一些搜索,并考虑使用
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; }'