これは次の質問に対するフォローアップですallpackages.txt.gz には 2 つの異なるファイル サイズがありますか?
$ 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
区切り文字として 1 つのスペースを使用して、最初のフィールドを保持します。cut -d- -f1
-
マイナス記号 ( ) を区切り記号として使用して最初のフィールドを保持します。uniq
同一行の連続を 1 行に圧縮します。wc -l
行数を出力します。
したがって、パイプライン全体はファイルの最初の 6 行を無視し、選択したフィールドの一意の値をカウントしようとします。(これは、入力がソートされていて、まとめられる値が順番に来ることを前提としています。そうでない場合は、おそらく の sort 呼び出しを
sort -u
使用できます)。