You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

sort命令不同用法返回结果不一致的疑问(OverTheWire关卡8→9场景)

sort命令不同用法返回结果不一致的疑问(OverTheWire关卡8→9场景)

嗨,我来帮你理清这两个命令的区别,解决你在OverTheWire关卡里遇到的问题~

首先明确你的核心需求:找出data.txt唯一出现一次的行(也就是下一关的密码),但两个命令的实际功能完全不同,这就是结果不一样的原因:

关于sort -cu data.txt的误区

你可能误以为这个命令是“找出唯一行”,但它的真实作用是检查文件是否已经是「排序完成且无重复行」的状态

  • -c选项是「check」,用来验证文件是否按顺序排好;
  • -u选项在这里是配合-c,要求检查的文件同时满足所有行唯一。

一旦命令发现文件不满足“已排序+无重复”的条件,它会立刻输出第一个找到的「违规行」(要么是顺序不对的行,要么是重复出现的行),然后直接停止运行。你看到的那行输出,只是它找到的第一个重复行,完全不是你要找的“唯一出现一次的行”。

为什么sort data.txt | uniq -u能得到正确密码

这个组合才是精准匹配你需求的操作:

  1. 第一步sort data.txt:把文件里所有行按顺序排列,这样所有重复的行都会被集中放在一起;
  2. 第二步uniq -uuniq-u选项专门用来过滤掉出现多次的行,只保留恰好出现一次的行——这正是你要找的密码所在行。

如果想验证结果的准确性,你还可以用sort data.txt | uniq -c查看每一行的出现次数,这样就能直观看到哪一行是只出现过一次的啦。

备注:内容来源于stack exchange,提问作者t.p.gonca

火山引擎 最新活动