0

如何从 Unix 终端中计算以下内容,然后将结果存储在文件中?

4F8D-AA87-D9EC8805DFDA,3a58538d510c66b98ad7bb3cb9768de08e1ae30b91302add63f7b115
4F8D-AA87-D9EC8805DFDA,3a58538d510c66b98ad7bb3cb9768de08e1ae30b91302add63f7b115
4F8D-AA87-D9EC8805DFDA,3a58538d510c66b98ad7bb3cb9768de08e1ae30b9130dsasdadsadss
49FB-A855-3EED46E0BF2E,3a58538d510c66b98ad7bb3cb9768de08e1ae30b9130dsasdadsadss

4F8D-AA87-D9EC8805DFDA,3a58538d510c66b98ad7bb3cb9768de08e1ae30b91302add63f7b115, 2
4F8D-AA87-D9EC8805DFDA,3a58538d510c66b98ad7bb3cb9768de08e1ae30b9130dsasdadsadss, 1
49FB-A855-3EED46E0BF2E,3a58538d510c66b98ad7bb3cb9768de08e1ae30b9130dsasdadsadss, 1

编辑:

好的,我想,我明白了:

cat lol | cut -f 1,2 -d ',' | sort | uniq -c > lol2

我现在唯一的问题是输出文件的第一列应该 - 事实上 - 在最后,而且输出文件应该是 csv 兼容的。有任何想法吗?

4

1 回答 1

1

简单地计算唯一行会不会有问题?如果不是,那么该uniq命令就是你的朋友——查看它的手册页,但一定要先对列表进行排序,以便所有重复都一个接一个地发生:

sort myfile.txt | uniq -c

对于您的示例数据,返回:

  2 4F8D-AA87-D9EC8805DFDA,3a58538d510c66b98ad7bb3cb9768de08e1ae30b91302add63f7b115
  1 4F8D-AA87-D9EC8805DFDA,3a58538d510c66b98ad7bb3cb9768de08e1ae30b9130dsasdadsadss
  1 49FB-A855-3EED46E0BF2E,3a58538d510c66b98ad7bb3cb9768de08e1ae30b9130dsasdadsadss

要重定向到文件,请附加> outfile.txt

sort myfile.txt | uniq -c > outfile.txt

如果您需要与问题中的输出类似的输出,您可以使用awk重新排序列和sed更改分隔符:

sort count.txt | uniq -c | awk '{ print $2 " " $1 }' | sed 's/ /,/'
于 2013-08-30T07:36:50.020 回答