参考文件: 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 ...
文件具有dos行结尾-每行以\r
CR字符结尾。