2003年10月18日

uniqコマンドのヘルプ

ちょっとFTPのログから特定ディレクトリからダウンロードした人のIPごとの集計をかけてみようと思ったんですが、
grep ディレクトリ名 /var/log/xferlog.* | cut -d":" -f4 | cut -d" " -f4 |sort | uniq
だと回数が判らないので、uniqで回数数えられなかったかなと思って
man uniq
してみると下のようなヘルプが出てきました
UNIQ(1)                                                                UNIQ(1)

名前
       uniq - ソートされたファイルから重なった行を削除する

書式
       uniq   [<+|->N]   [-ciduD]  [-f  N]  [-s  N]  [-w  N]  [--all-repeated]
       [--check-chars=N]      [--count]      [--ignore-case]      [--repeated]
       [--skip-chars=N] [--skip-fields=N] [--unique] [INFILE [OUTFILE]]

       uniq [--help] [--version]

説明
       uniq   は INFILE ユニークな (=他と内容の重ならない) 行を標準出力 (OUT-
       FILE が指定されていたらそれ) に書き出す。 INFILE が与えられかったり `-'
       だった場合には、標準入力が用いられる。

       デ フォルトでは、 uniq はソートされたファイルにあるユニークな行を表示す
       る。つまり複数の行が同一な内容を持つ場合は、一行だけ表示して残りは捨 て
       る 。オプションで指定すると、一回しか現われない行だけを表示したり、複数
       回現われる行だけを表示することもできる。

       uniq に与える入力はソートされていなければならない。入力がソートされてい
       ない場合は、 `sort -u' を使うのが良いだろう。

       -N, -f N, --skip-fields=N
              同 一行かどうかの判断を行う前に N 個のフィールドをスキップする。
              フィールドとは空白とタブ以外の文字からなる文字列で、フィールド間
              は一つ以上の空白かタブで区切られる。

       +N, -s N, --skip-chars=N
              同 一行かどうかの判断を行う前に N 個の文字をスキップする。フィー
              ルドスキップと文字スキップのオプションを両方指定した場合は、フィ
              ー ルドスキップが先に行われる。 -c, --count それぞれの行が何回現
              われたかを行の内容とともに表示する。

       -i, --ignore-case
              比較の際に英大文字小文字の違いを無視する。

       -d, --repeated
              同じ内容が二行以上あるものだけを出力する。

       -u, --unique
              一回しか現われない行だけを出力する。

       -w N, --check-chars=N
              行を比較するとき、各行の N 個の文字だけを使う。これはフィール ド
              や文字のスキップを行った後の数である。デフォルトでは、スキップ後
              残った文字すべてが比較の対象にされる。

       -D, --all-repeated
              重複行をすべて表示し、重複しなかった行は表示しない。このオプショ
              ンは、主に他のオプションと組み合わせて使う。例えば大文字小文字を
              無視して比較したり、特定のフィールドだけで比較するような場合であ
              る。このオプションは GNU による拡張である。

       --help 標準出力に使用方法のメッセージを出力して正常終了する。

       --version
              標準出力にバージョン情報を出力して正常終了する。

注意
       プログラムのバグについては bug-textutils@gnu.org に報告してください。
       man ページは Ragnar Hojland Espinosa  が作成しました
       。

GNU textutils 2.0               15 August 1999                         UNIQ(1)
-cオプションの説明は?(;´д`)ノ

英語のman

-c, --count prefix lines by the number of occurrences
  • -c, --count それぞれの行が何回現われたかを行の内容とともに表示する。
を見るとちゃんと載ってるんですけどねぇ・・・

う〜ん謎

あとログは下のようにすると回数順に並んで見やすかったです。

grep ディレクトリ名 /var/log/xferlog.* | cut -d":" -f4 | cut -d" " -f4 |sort | uniq -c | sort -nr
Posted by Takuchan at 2003年10月18日 13:31 | トラックバック(0)

+Nのオプションの最後に-c, --countが載ってますね.
改行が抜けてたのかな?

+N, -s N, --skip-chars=N
同 一行かどうかの判断を行う前に N 個の文字をスキップする。フィー
ルドスキップと文字スキップのオプションを両方指定した場合は、フィ
ー ルドスキップが先に行われる。 -c, --count それぞれの行が何回現
われたかを行の内容とともに表示する。

Posted by: peccu at 2011年02月05日 19:13

あら、ホントですね。
見落としてました(^_^;

Posted by: Takuchan at 2011年02月05日 21:24