例如,这是 list.txt
Joe 3
Jack 1
Ulysses 6
Fox 2
Cassidy 1
Jones 6
Kevin 7
那么输出应该是5
因为第二列中有5个不同的值。
我应该如何仅通过使用来完成此操作sort
cut
wc
uniq
?
我有个想法,先用sort -k2n
升序对第二列进行排序,然后再用uniq
去消除第二列的重复行,结果会是这样
Cassidy 1
Fox 2
Joe 3
Jones 6
Kevin 7
然后我cut -d ' ' -f2
用来列出所有的数字1 2 3 6 7
,然后我wc -d
用来计算不同值的数量,这将返回5
。
我应该在uniq
部分中做些什么来消除具有相同编号的重复行?
有没有一种简单的方法可以做到这一点?
我会开始,
cut
因为您只关心第 2 列中的唯一性:结果是:
现在你想要独特的价值;uniq 会这样做,但前提是它已排序。如果要排序,请继续使用 sort 的 -u 标志:
结果是:
现在您可以使用它
wc
来计算输出的行数:这给了你:
请注意,我们依赖于 list.txt 文件的特定格式——人名中没有空格!
我会去:
哪里
names
有这个内容:由于您需要使用
-sort -cut -wc -uniq
,那么似乎所需的命令行应该是这样的: