我在一个文件夹中有大约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
答案 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的另一种方法,只是简单的cat
和uniq
for f in `ls *.bxout`;do cnt=`cat $f|uniq|wc -l`;echo "$cnt $f";done