如何在每个文件中打印文件名以及唯一条目?

时间:2016-05-25 11:19:29

标签: file unix unique

我在一个文件夹中有大约100个文件,我想计算coloumn 1中的唯一元素的数量。我尝试了以下代码,它只给出了每个文件的编号。我需要的是每个案例的唯一编号和文件名。

for f in *.bxout; do awk '{print $1}' "$f" | sort| uniq | wc -l ; done

输出就像

68

45

…..

141

我需要什么

68 fille1.txt

45 fille13.txt

….

141 fille15.txt

2 个答案:

答案 0 :(得分:0)

只需在你的管道之后连接文件名:

for f in *.bxout; do echo "$(awk '{print $1}' "$f" | sort| uniq | wc -l) $f" ; done

将管道减少为单awk命令:

$ cat a.bxout 
1
1
2
$ cat b.bxout 
1
1
2
3
$ for f in *.bxout; do awk '{arr[$1]} END{for(key in arr) cnt++; print cnt " " FILENAME}' "$f"; done
2 a.bxout
3 b.bxout

答案 1 :(得分:0)

没有awk的另一种方法,只是简单的catuniq

for f in `ls *.bxout`;do cnt=`cat $f|uniq|wc -l`;echo "$cnt $f";done