2

次のことを行う必要がある http アクセス ログからのデータがあります。

  1. 特定のディレクトリ内のすべてのファイルでパターンを検索します
  2. そのデータを別のファイルに書き込む
  3. 新しいファイルの一意性を確認し、重複するエントリを削除します

データは次のようになります。

<IP address> - - [09/Sep/2012:17:35:39 +0000] "GET /api/v1/user/followers?user_id=577670686&access_token=666507ba-8e88-423b-83c6-9df44bee2c8b& HTTP/1.1" 200 172209 <snip>

user_id=577670686 の数値部分に特に興味があります。これを新しいファイルに出力したいと思います (その部分はまだ試していません)...

私はsedを使用しようとしましたが、実際にデータを操作しようとしているわけではないので、信じられないほど不器用に思えます.... awkを見ましたが、データは実際には列ベースではなく、 $# 指定はしませんでした'このデータでは機能しません ($10 になりますよね?) そして、$# を使用した結果のデータ部分を取り除く方法がわかりませんでした。私は perl を使用するように提案されたので、Google で例を見てきましたが、それは私にはとてもなじみがありません。助言がありますか?

4

1 に答える 1

0

関連する部分を抽出するために使用sedし、次にレポートsortするuniqペアを抽出します。

$ sed -r 's/.*user_id=([0-9]+)&.*/\1/' access.log | sort | uniq -c

これにより、すべての一意のuser_id値が出現の総数とともに出力されます。

于 2012-10-02T18:09:56.073 に答える