http://q.hatena.ne.jp/1168769037

の続きなのですが、
URL,ファイル名(日本語)という組み合わせのリストファイル「list.csv」があり、上記Qでご回答いただいた方法で、アクセスログファイル「access.log」に含まれるURLをカウントして、ファイル名(日本語)というファイル(中身はカウントされた数)という状態になっています。

これを毎日カウントして、
URL,ファイル名,1,2,3,4…(日々の数字)
というcsvファイルに最終的にまとめたいのですが、できるだけ簡潔な方法をお教え下さい。引き続きよろしくお願いいたします。

ディレクトリ構成
script.sh
access.log
日本語のファイル名1(中身は、毎日のアクセス数が,区切りで表示)
日本語のファイル名2

list.csv
accesslog.csv<最終的にまとめるcsv

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2007/01/21 21:05:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:openseed No.1

回答回数51ベストアンサー獲得回数6

ポイント60pt

すみません。質問はシェルだと思いますが、自分の勉強もかねて・・・コマンドを利用した集計を紹介させていただきます。

awk -F, '{print($1 "," $2);system("cat " $2);print("@")}' list.csv |tr "\n" "," | sed 's/,@,/\n/g' > accesslog.csv

※ @ をセパレータとして利用しています。

以下のコマンドを順に実行していただければ、どのような処理をしているか、理解しやすいと思います。

awk -F, '{print($1 "," $2);system("cat " $2);print("@")}' list.csv

awk -F, '{print($1 "," $2);system("cat " $2);print("@")}' list.csv |tr "\n" ","

awk -F, '{print($1 "," $2);system("cat " $2);print("@")}' list.csv |tr "\n" "," | sed 's/,@,/\n/g'


参考になれば幸いです。

http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230879/?ST=o...

http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230906/?ST=o...

id:openseed No.2

回答回数51ベストアンサー獲得回数6

ポイント10pt

前のシェルスクリプトを参考に、シェルスクリプトで作成してみました。

#!/bin/sh

IFS=","

rm -f accesslog.csv

while read URL FILE

do

cnt=`cat $FILE | tr "\n" ","`

echo $URL $FILE $cnt | sed 's/ /,/g' >> accesslog.csv

done < list.csv

http://q.hatena.ne.jp/1168769037

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません