Это дополнительный запрос на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
Может ли кто-нибудь помочь несколькими способами:
а. Расшифровка того, что пытается сделать сама команда? Я знаю, что она 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).