- ベストアンサー
こづかい帳作成の注意点と時間データの集計方法
- こづかい帳作成時の注意点として、センセーショナルなタイトルを30文字前後で生成する必要があります。また、質問文章の内容を要約し、100文字程度の要約文を3つ作成する必要があります。さらに、時間データを集計する際には、データの重複を回避するために注意が必要です。
- データの重複を回避するための方法として、uniqコマンドを使用することが考えられます。ただし、uniqコマンドを実行する際には、集計前にデータを追加する必要もあります。具体的には、時間のデータが重複する場合は、重複したデータを削除するという処理を行うことができます。
- しかし、uniqコマンドを使用する際には注意が必要です。uniqコマンドを実行した段階で重複したデータが削除されてしまうため、必要なデータが失われる可能性があります。そのため、uniqコマンドを実行する前に、重複したデータを追加することを検討する必要があります。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- こづかい帳のような集計のアルゴリズムって?
こんばんは。gawkとbashを用いてlogの集計を行っています。 その際にお小遣い帳のような機能を実現することがなかなか出来ずに 困っています。perlだったら、ネットでもかなり情報が豊富だし、 書籍も多いと思うけど、awkってUNIXの基本的な知識ってことでUNIX管理系の 書籍にちょこっと載ってるってケースが多いですよね。それか ものすごく分厚い本でなかなかなじめないようなのとか。。。助けて下さい。 例えば 1/1 gohan 1000 1/1 kaimono 5000 1/1 kaimono 2000 1/2 karaoke 3500 1/2 gohan 1200 1/2 gohan 1500 といったデータがあったとして、これを 1/1 gohan 1000 1/1 kaimono 7000 1/2 karaoke 3500 1/2 gohan 2700 のように集計したいのです。月日の部分を基点にして、1/1の部分についてだけ for(i in count)の形式を用いて集計する。その後1/2の部分について集計する。 というのをずーっと続けていくには、どのようなスクリプトを書けば いいんですか?教えて下さい。どうかお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- VB2005で重複件数を調べたい
VB初心者ですがUNIXコマンドの『uniq -c』のような重複件数を 出力して重複行を1行だけ出力したいのですがどう書けばよいのでしょうか? 【DATA】 3010 3020 3010 3011 3010 【処理結果】 3010,3 3011,1 3020,1 ご教授おねがいします。
- ベストアンサー
- Visual Basic
- awkで列を集計するシェルについて
シェル初心者です。教えてください。 ログファイルが10万行超えるものでシェルにて集計することになり、下記のような集計ができればと思っています。 商店名 商品名 価格 A商店 りんご 100 B商店 ぶどう 300 A商店 みかん 150 C商店 りんご 100 A商店 りんご 100 B商店 みかん 150 C商店 りんご 100 C商店 ぶどう 300 ※各列はブランク(空白)によって区切られ、改行済みで行数は10万行以上 (1)awk '{print $1}' | uniq -d (重複した商店の抽出) (2)awk '{print $2}' | uniq -d (重複した商品名の抽出) (1)、(2)の抽出を満たす「価格」の合計を"集計結果”として > shukei.txt などに出力したいと思ってます。 VBAでいれば、firlterしsumifして合計するようなイメージのものです。 ご教授お願い致します><
- ベストアンサー
- インターネットビジネス
- Linuxコマンドのエラーについて
こんにちは。会社の前任者より引継ぎ、初めてのLinuxコマンドに苦戦しています。 tracklist.csvというファイルの中に、8桁の数字が上から下に向かってたくさん入力されています。 その中から重複データを抽出するために、Cygwinというツールで以下のコマンドを入力し、duplicate.txtに重複データを抽出しようとしてますが、データが0件でファイルが抽出されます。 $ cat tracklist.csv l sort -n l uniq -d >duplicate.txt cat: invalid optin --d Try 'cat --help' for more information 重複データは必ず含まれているはずですので、Hitしないはずがないのですが。。。。 説明が少なく申し訳ございません。これで原因がわかるようでしたら、回答を教えてください。 よろしくお願いいたします。
- ベストアンサー
- Linux系OS
- UNIXで文字列操作
あるログファイルを整理しているのですが知識が無く困ってます。 A A B C というログファイルの重複部分のみ消去したいのですが一般的なコマンドで可能でしょうか?catしてsortして整理まではできたのですが重複文字列をどのように消せば良いでしょうか? データ数は2万行ほどです
- ベストアンサー
- その他(ITシステム運用・管理)
- webalizerのログを再集計したいのですが・・
知人に頼んで、サイトのアクセスログ解析にwebalizerを使用して毎日決まった時間に集計するよう設定してもらいました。 ある日うまくログ解析できなかったため、自分なりに調べてwebalizerを実行した所、一部の集計データが消えてしまいました! 具体的な状況は以下になります。 8月9日に8月8日のログが集計されていない事を確認 ※この時点で8月1日~7日の集計データは表示されていました。 ↓ webalizerの再実行 ↓ 8月8日の集計データは表示されたが、8月1日~7日の集計データが消失。 ↓ 現在は正常に作動中。但し8月1日~7日は消えたまま、8日以降のデータしか表示されない。 なんとかログを再集計して、8月1日~7日のデータを表示したいのですが どのようにすればよいでしょうか? webalizerはぜんぜん理解していないため、非常に困っております・・・。
- ベストアンサー
- その他([技術者向] コンピューター)
- CSVファイルの重複チェック
あるデータがあり、そのデータが毎日増えていくと仮定します。 (もともと元データが100件あって、毎日10件づつ増えていくようなイメージ) 毎日10件づつ増えていくデータの中で、もともとあった100件と 重複しているものがあるかどうかのチェックを効率的に行いたいと考えています。 イメージとしては元データはaccessかエクセル上に存在していて、 毎日増えていくデータをCSVインポートか何かで取り込んで、 マクロか何かでチェックをかけると、 重複しているかどうかのチェックをかけてくれるような仕組みが無いか探しています。 (重複していないものの一覧をエクスポート および 重複していないものを元データに追加してくれる とかいう処理があるとよりありがたいです) 手動でやると大変なので、そういったことが出来るツールなど フリーソフトでご存知の方、もしくはエクセルマクロで簡単に出来るよ といったアドバイスいただけると大変助かります。 WEBシステムでももちろん結構です。 質問の中で不明確な点がありましたら追加で補足しますのでご指摘ください。
- 締切済み
- その他(プログラミング・開発)
- 自宅の公開サーバへのアクセス元IPの解析を以下のスクリプトで行おうと考
自宅の公開サーバへのアクセス元IPの解析を以下のスクリプトで行おうと考えております。 これをcronで自動化したいのですが、cronで実行するとawk以下のコマンドの実行結果が空になり、本文に組み込まれません。日本語は正しく表示されています。 rootで実行した場合は、すべての結果が正しくメール送信されてきます。 Linux初心者なため、詳しい方からのアドバイスをお待ちしております。 以上、よろしくお願いいたします。 ~~~~~~スクリプト~~~~~~~~~ #!/bin/bash # 初期設定(環境変数、メール送信宛先、件名、コマンド) export LANG=ja_JP.UTF-8 address="hogehoge@hoge.com" subject="Webアクセス解析" LOG=./log/http_analyze.log cmd="cat $LOG" awk '{print $1}' /var/log/httpd/access_log | sort | uniq -c | sort -r > $LOG 2>&1 # 件名の文字コードをJISに変換 #subject=`echo $subject | nkf -j` subject=`echo $subject` # メール送信(コマンド結果はSJISに変換) mail -s "$subject" $address << HONBUN アクセス回数/アクセス元IPアドレス `$cmd` HONBUN # 終了 exit ~~~~~~~~~~~~~~~~~~~~ ~~~~root実行結果メール本文~~~~ アクセス回数/アクセス元IPアドレス 34 192.168.0.XXX 12 84.XXX.181.XXX 8 201.XXX.235.XXX 6 187.XXX.19.XXX ~~~~~~~~~~~~~~~~~~~ ~~~~cron実行結果メール本文~~~~ アクセス回数/アクセス元IPアドレス ~~~~~~~~~~~~~~~~~~~ また、その他気になる点がありましたら、合わせてアドバイスいただければ幸いです。
- ベストアンサー
- ハードウェア・サーバー
- キーが重複したレコードを無視してリストアする方法は?
キーが重複したレコードがバックアップファイル内にあっても、それを無視して重複していないレコードだけをリストアする方法は無いでしょうか? 現在、osqlコマンドを用いてテーブルの既存データに追加する形でリストアするプログラムを作っているのですが、重複したレコードがあると処理が中断してしまうため、残った重複のないレコードを追加できずに困っています。 サーバはSQL Server 2000 使用言語はVB.NET になります。 ご教授宜しくお願い致します。
- ベストアンサー
- SQL Server
- ピボットテーブルについてです
ピボットテーブル内のデータで件数を数えたいのですがそれは可能でしょうか? 例えば画像のようなピボットで、「何月にA社では何種類売り上げがあったか」を出したいです。 できれば、集計行の上下どちらかに結果を出したいです。 元データを使っていろいろしてみましたが、重複するデータが多いので正しく出せません。ピボットのデータで…と思うのですが、可能でしたら方法を教えていただきたいです。 図々しいですが、もし他に方法があれば、教えていただきたいです。
- ベストアンサー
- Excel(エクセル)
お礼
あれ。なんかterra5さんが補足した形になっちゃいました。 ごめんなさい。
補足
お返事ありがとう。 うーん、全くその通りですね(^^; ただ単にデータを増やしているだけだ~(>_<) 「何のためにどういうものをつくりたいのか」だけど、 「こづかいの集計機能の体得のために」 「logを集計してグラフで分かり易くしたい」 です。グラフは集計後のlogをftpを使って自分のパソコンに取り込んで、 Excelでグラフ化するつもりです。でも、 ほんとはね、集計する時にちゃんと1時間づつ区切って 24個のlogを作るつもりだったんだよ。 でも、分からなかったの。あ、違う。えーとー、 { for(i=1;i<=24;i++){ if((100*(i-1) <= $1) && ($1 < 100*i)){ count[i]++ } } } END{ for(i=1;i<=24;i++){ if(count[i] != 0){ print i,count[i] } else { print i,0 } } } ってやると、データがない時に0出るよね?でも、集計する時に { if(length($2) > 0){ kazu[$2] ++; } } END{ for(i in kazu) print $1,i,kazu[i] } ってのを使う場合、for文ってのは同じだけど、これってawk独特の 連想配列ってやつとかで、これと先に書いたfor文を組み合わせることが できないんです。それか、前に教えてもらった { sum[$2,$3] += $4 } END { for(item in sum){ split(item, t, SUBSEP ); printf("%s %s %s %d\n",$1,t[1],t[2],sum[item]); } } これだって、連想配列ですよね?結局、集計が終わってから 「あ、0のデータがない…。」って気付いて、 後から0のデータをくっつけるってことになっちゃったんです。 どうしたらいいですか~?あ、今考えてる方針、 自分が思ってるの言います。時間のフィールドで 23:00だったら、FS=":"ってやってjikan=$1*3600ってやれば 秒数が出ますよね。ここでまた新たに for(i=1;i<=24;i++){ if((3600*(i-1) <= jikan) && (jikan < 3600*i)){ print strftime("%H:%M",jikan),$2,$3 } else { print strftime("%H:%M",jikan),0,0 } } ってやればいいんですか?