我想用 ubuntu 终端划分两个值,但第一个数字是这样做的结果:
wc -l file.txt
即:200
第二个数字是通过键入以下内容获得的:
gawk '{print $3}' file.txt | sort | uniq | wc -l
即:20
如何划分这两个数字(不使用数值,而是使用代码?)
最佳答案
这是计算文件的行数:
wc -l file.txt
这是计算第三列中出现的不同项目的数量:
gawk '{print $3}' file.txt | sort | uniq | wc -l
所有这些都是
awk
可以很容易地做到:awk '{uniq[$3]} END{print NR, length(uniq), NR/length(uniq)}' file.txt
那是:
{uniq[$3]}
跟踪第 3 列中出现的项目 END{print NR, length(uniq), NR/length(uniq)}
打印行数(NR
)以及不同项目的数量及其划分。这是因为 NR
在 END
block normally保存读取的最后一行的编号,因此是行数, length()
是一个返回数组中项目数的函数。 测试
$ cat a
1
2
3
1
2
3
$ awk '{uniq[$1]} END{print NR, length(uniq), NR/length(uniq)}' a
6 3 2
$ awk '{uniq[$1]} END{printf "lines: %d; different items: %d; proportion: %f\n", NR, length(uniq), NR/length(uniq)}' a
lines: 6; different items: 3; proportion: 2.000000
关于ubuntu - 如何划分两个不同命令的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40397188/