我无法完全获得完全独特的结果 - Linux 流水线

I can't quite get the results to be fully unique - Linux pipelining

我快到了...我应该最终得到 340 个独特的服务。到目前为止,我只能把它降到341。

这些是我的任务:

  1. 从文件中提取所有服务名称。
  2. 按字母顺序对名称进行排序,删除所有重复项。
  3. 删除所有空行或不包含字母的行 字母表。
  4. 将最终输出捕获到名为 'uniqueservices.txt'.
  5. 的文件中
  6. 使用条件命令计算文件中的行数 如果前面的组合命令成功则执行。

这是我使用的命令:

cat /etc/services | grep -Ev '^#|^$' | cut -f1 | sort -u > uniqueservices.txt && wc -l uniqueservices.txt

这是我应该得到的:

This is what I should get

这是我实际得到的:

What I actually get

我猜(一如既往)有更好的方法来做到这一点,但是......嘿,我是新手。不过很接近!

提前致谢。

S

命令的 cut -f1 部分通过扫描制表符分隔符的行来确定“第 1 列”的含义。您看到的不匹配行可能只是使用了 space 字符。 我想最简单的做法是再次 运行 cut 但寻找 spaces 而不是 TABs.

cat /etc/services | grep -Ev '^#|^$' | cut -f1 | cut -d' ' -f1 | sort -u > uniqueservices.txt && wc -l uniqueservices.txt