• ベストアンサー

URLのパラメーター解析

アクセスログの集計ツールを作っているのですが URLのパラメーター解析の所がうまくいきません。 例えば、以下の様に変更したいのです。 /folder/test.html?ID=0001&TEST=bbb&NAME=1111&WORK=**** /folder/test.html?ID=0002&TEST=ccc&NAME=2222 /folder/test.html?ID=0003&NAME=3333 /folder/test.html?ID=0004&NAME=4444&WORK=**** を ID,TEST,NAME,WORK 0001,bbb,1111,**** 0002,ccc,2222, 0003,,3333, 0004,,4444,**** (カンマ区切り) 可能ならば、Linuxのコマンドを利用(awkコマンドの連想配列?) して作りたいのですが、他に簡単にできそうな方法はないでしょうか? PERLでやるのが無難でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

BEGIN { OFS="," IDpat ="ID=[^&]+" TESTpat="TEST=[^&]+" NAMEpat="NAME=[^&]+" WORKpat="WORK=[^&]+" print "ID,TEST,NAME,WORK" } { ID =match($0, IDpat ) ? substr($0, RSTART +3, RLENGTH -3) : "" TEST=match($0, TESTpat) ? substr($0, RSTART +5, RLENGTH -5) : "" NAME=match($0, NAMEpat) ? substr($0, RSTART +5, RLENGTH -5) : "" WORK=match($0, WORKpat) ? substr($0, RSTART +5, RLENGTH -5) : "" print ID,TEST,NAME,WORK }

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

sed、awk、perl、ruby 正規表現が使えるツールなら、何でもOKです。 何を持って無難と判断するのか良く分かりませんが、あなたの 得意なツールでテキスト処理してください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • シェルの引数を、実行するパラメータに指定するには?

    シェル初心者です。 シェルの実行パラメータを、その中で実行する処理のパラメータに再び指定したいのですが可能でしょうか。 ただし、パラメータの数は可変です。 環境はSolarisです。 aaa.sh aaa bbb ccc aaa.shの中 bbbコマンド aaa bbb ccc ということを行いたいです。 パラメータ数が固定であれば問題なさそうですが 可変の場合、どのような記述をすればよいでしょうか?

  • awkのセパレータ指定について

    awkのセパレータ指定について教えてください。 以下のようなファイルがありそれを'||'区切りで出力したいです。 下記のような指定をしてみたのですが、 うまくいきませんでした。 cat text | awk -F '||' '{print $1}' [test.txt] aaa||bbb||ccc [期待する結果] print $1 → aaa print $2 → bbb print $3 → ccc どなたか教えてください。 よろしくお願いします。

  • rubyで特定カラムを持つ配列を削除する方法

    ruby on railsにおいて、以下のようにinpectで表示させたときに二次元ハッシュで表示される変数testがあるとき、nameがbbbの行を削除した配列を作成したいのですが、どのようにすればよろしいのでしょうか。 ●現状 logger.debug test.inpect [#<"id" => 1 , "name" => "aaa" >, #<"id" => 2 , "name" => "bbb" >, #<"id" => 3 , "name" => "ccc" >, #<"id" => 4 , "name" => "bbb" >]  ↓ ●削除後 logger.debug test.inpect [#<"id" => 1 , "name" => "aaa" >, #<"id" => 3 , "name" => "ccc" >] なかなか上手く移行ができず苦慮しています。ご教示お願いいたします。

  • SUBMITボタンで値を渡す時、次のページのパラメータをAAA="BBB=1&CCC=1"みたいにするには?

    普通、次のページに渡すパラメータは test.asp?AAA=1 みたいな形だと思うのですが、 test.asp?AAA=BBB=1&CCC=1 みたいなことをしたいのです。 BBB=1&CCC=1 を AAA に格納したいのですが、 どうやればいいのでしょう? Server.urlencode とかいうのがよく分かりません どなたか意味と役割と使い方を教えて下さい。

  • Access VBA クエリのパラメータについて

    初めまして。 Accessのクエリにパラメータを渡して実行したいのですが、上手くいきません。 ■クエリの中身 SELECT B.aaa AS test_1, B.bbb AS test_2, B.ccc AS test_3, INTO Atbl IN @prm FROM Btbl; 上記「@prm」には「C:\work\test..accdb」が入ります。 このファイルパスをパラメータで渡したいのですが クエリを保存し閉じると、以下のようにシングルクォーテーションが付いてしまいエラーとなります。 INTO Atbl IN '@prm' どなたかこちらを解決できる方法をご教示いただければと思います。 よろしくお願いいたします。

  • DOSコマンドの環境変数取得について

    DOSコマンドで/区切りの文字列の取得方法が分からなく教えて頂きたいです。 (例) DOSコマンドでdddだけ取得して表示したいです。 set test=aaa/bbb/ccc/ddd UNIXshellだと test=aaa/bbb/ccc/ddd file=`basename $1` echo $file ddd setコマンドの置換""ではなく、/区切り位置での取得方法で 何か方法がありますでしょうか? ご説明内容が分かりにくくて申し訳ございませんが、 よろしくお願い致します。

  • コマンドについて

    初心者でコマンドを勉強しています。質問させてください。 Dドライブ直下にaaaフォルダとbbbフォルダを作りbbbフォルダの中にはccc.txtが入っています。 bbbをフォルダごとaaaに移動させようとしてコマンドでD:\>move bbb \aaa という風にaaaの前に「\」付けてしまいました。・・・がしかし上手く 移動され、aaaの中にbbbが入りました。  これをD直下では無く、Dの中のtestフォルダの中に、同じようにaaaフォルダ、bbbフォルダ(中にはccc.txt)を作り、D:\>move bbb \aaa とやってみると・・aaaには移らず、D直下に新たにaaaフォルダが作成され、その中にccc.txtだけが移ってしまいました。 bbbは消え去りました。 なぜこういう違いがでるのでしょうか。 初心者ですみませんがよろしくお願いいたします。

  • URLに付く [ ] を外したい

    現在稼働中のWebシステムの保守を担当しています。 先日、お客様から「URLに付いている [ ] を消して欲しい」との依頼がありましたが、 やり方が分からず、困っております。 現在、 xxx/aaa[]/1,2,3/bbb[]/1,2,3/ このようになっているURLを xxx/aaa/1,2,3/bbb/1,2,3/ に変更したいという依頼です。 現在、以下のようなフォームがあり <form action="xxx.php" method="GET"> <input type="checkbox" name="aaa[]" value="1"> <input type="checkbox" name="aaa[]" value="2"> <input type="checkbox" name="aaa[]" value="3"> <input type="checkbox" name="bbb[]" value="1"> <input type="checkbox" name="bbb[]" value="2"> <input type="checkbox" name="bbb[]" value="3"> </form> このフォームを送信するとURLは以下のようになりますが、 xxx.php?aaa[]=1,2,3&bbb[]=1,2,3 これを .htaccess で xxx/aaa[]/1,2,3/bbb[]/1,2,3/ というように書き換えています。 このURLを、 xxx/aaa/1,2,3/bbb/1,2,3/ に変更することはできますでしょうか? html、.htaccess、php、どの部分が改修になっても構いません。 [ ] を削除したいという理由としては、 インターネットの広告を出すときに、広告登録フォームでURLがエラーになるから、ということでした。 広告登録フォームでURLがエラーにならなければ良いのかと思い、 xxx/aaa%5b%5d/1,2,3/bbb%5b%5d/1,2,3/ というように [ ] の部分をURLエンコードする方法をお伝えしましたが、%が付くのもダメということでした。 xxx/aaa_0/1/aaa_1/2/aaa_2/3/bbb_0/1/bbb_1/2/bbb_2/3/ というように カンマ区切りじゃなくなるのも嫌だそうです。 あくまで xxx/aaa/1,2,3/bbb/1,2,3/ の形が良いとのことでした。

  • シェルスクリプト 重複削除

    aaa,11 bbb,22 aaa,14 ccc,22 ddd,11 と行があるとして、カンマ区切りの左側が重複しないように最初にでてくるものだけをピックアップして aaa,11 bbb,22 ccc,22 ddd,11 と出力したいです。 ワンライナー先生お願いします。 一行じゃデキナイカナ?

  • Access(office2000)

    accessを用いてあるデータをまとめたい(集計)のですが、 うまくいきません。 tableが3つあり、各2つフィールドがあります。 どのtableも同じ構成でフィールド1には氏名、フィールド2には数(整数)が入っています。 構成は同じものの、データが異なります。 それぞれのtableのフィールド1は同値のものが多々存在します。 例: table1は name| num1 ---------- aaa | 10 | bbb | 12 | table2は name| num2 ---------- aaa | 8 | bbb | 19 | table3は name| num3 ---------- aaa | 20 | bbb | 5 | ccc | 5 | としたとき、 name| num1| num2|num3 | 計 ---------------------------- aaa | 10 | 8 | 20 | 38 bbb | 12 | 19 | 5 | 36 ccc | 0 | 0 | 5 | 5 となるようにしたいのです。 どのようにすれば値を集計できるでしょうか? よろしくお願いいたします。