即使在`sort`之后,`uniq`仍在重复某些值

问题描述 投票:3回答:1

参考文件: http://snap.stanford.edu/data/wiki-Vote.txt.gz

(这是一个磁带存档,其中包含一个名为Wiki-Vote.txt的文件]

[包含以下内容的文件的前几行,head -n 10 Wiki-Vote.txt

# Directed graph (each unordered pair of nodes is saved once): Wiki-Vote.txt 
# Wikipedia voting on promotion to administratorship (till January 2008). 
# Directed edge A->B means user A voted on B becoming Wikipedia administrator.
# Nodes: 7115 Edges: 103689
# FromNodeId    ToNodeId
     30          1412
     30          3352
     30          5254
     30          5543
     30          7478
     3            28

我想找到图中的节点数量,(尽管已经在第3行中给出了)。我运行了以下命令,

awk '!/^#/ { print $1; print $2; }' Wiki-Vote.txt | sort | uniq | wc -l

说明:

  • /^#/匹配以#开头的所有行。而且!/^#/不匹配。

  • [awk '!/^#/ { print $1; print $2; }' Wiki-Vote.txt在新行中打印所有那些匹配行的第一和第二列。

  • [| sort用管道输送输出以对其进行排序。

  • | uniq 应该显示所有这些唯一值,但不显示>。

  • [| wc -l计数前几行,这是错误的。

  • 上面命令的结果是8491,而不是7115(如第3行所述)。我不知道为什么uniq重复这些值。我可以说,由于awk '!/^#/ { print $1; print $2; }' Wiki-Vote.txt | sort -i | uniq | tail返回,

992
993
993
994
994
995
996
998
999
999

其中包含重复的值。有人请运行代码并告诉我,我不是唯一得到错误答案的人,请帮助我弄清楚为什么我得到了我得到的。

参考文件:http://snap.stanford.edu/data/wiki-Vote.txt.gz(它是一个磁带存档,其中包含一个名为Wiki-Vote.txt的文件)。该文件的前几行包含以下,-n ...

linux awk posix uniq
1个回答
4
投票

文件具有dos行结尾-每行以\r CR字符结尾。

© www.soinside.com 2019 - 2024. All rights reserved.