这是后续查询allpackages.txt.gz 有两个不同的文件大小?
$ wc -l allpackages.txt
57725 allpackages.txt
我查看了输出,它显示 57725 -6 头文件,这是 57719 个包的总数,但在评论中共享http://linux.koolsolutions.com/2008/12/19/counting-number-of-packages-under-debian-linux/#comment-10014以下命令应该有效,但无效。
$ tail -n +7 allpackages.txt | cut -d’ ‘ -f1 | cut -d’-‘ -f1 | uniq | wc -l
cut: cut: the delimiter must be a single character
Try 'cut --help' for more information.
the delimiter must be a single character
Try 'cut --help' for more information.
0
有人可以通过以下几种方式提供帮助:-
A。解码命令本身试图做什么?我知道它tail
用于给出最后 10 个奇怪的单词,并且cut
是在您尝试删除文件的某些部分时使用的。
如果需要,可以在某处共享 allpackages.txt,以便人们可以找出了解其中包的唯一数量的最佳方法。
https://www.dropbox.com/sh/9p03q138xx9nxvb/AAAukls-UnxRZwoCPwx4HwLAa?dl=0
答案1
您显示了命令:tail -n +7 allpackages.txt | cut -d’ ‘ -f1 | cut -d’-‘ -f1 | uniq | wc -l
。这包含非 ASCII 引号,这当然不是预期的。
试试这个:
tail -n +7 allpackages.txt | cut -d' ' -f1 | cut -d- -f1 | uniq | wc -l
以下是管道成员的工作:
tail -n +7
从第 7 行开始打印文件;cut -d' ' -f1
保留第一个字段,使用单个空格作为分隔符;cut -d- -f1
保留第一个字段,使用减号 (-
) 作为分隔符;uniq
将相同行的运行压缩为单行;wc -l
打印行数。
因此,整个管道会忽略文件的前六行,然后尝试计算所选字段的唯一值。 (这假设输入已排序,以便要压缩在一起的值按顺序排列,如果不是这样,则可能
sort -u
可以使用对 sort 的调用)。