シェルで複数ファイルの計算方法に困ってます
- ファイル毎に使用容量を管理するシェル作成中、困ってます。
- カウントと使用量列を加算し新しいファイルに出力する方法を教えてください。
- diff・grep・sedを試しましたが解決策が見つかりませんでした。
- ベストアンサー
シェル:複数ファイルの計算方法に困ってます
ファイル毎に使用容量を管理するシェル作成中、下記の内容で困ってます。いいアイデアを教えていただけないでしょうか。 よろしくお願いします。 【 前日分 】old.txt カウント 使用量 ファイル名 5 10 aaaaaa.txt 5 15 bbbbbb.txt 3 20 dddddd.txt 【 当日分 】 new.txt カウント 使用量 ファイル名 1 50 aaaaaa.txt 1 65 bbbbbb.txt 1 15 cccccc.txt 【理想】new.tmp カウント 使用量 ファイル名 6 60 aaaaaa.txt 6 80 bbbbbb.txt 1 15 cccccc.txt 3 20 dddddd.txt new.txtと同じ名前がold.txtにあれば、カウント列・使用量列をそれぞれ加算しnew.tmpに出力。 new.txtにあってold.txtに無い場合はそのまま行をnew.tmpに出力 new.txtになくてold.txtにある場合もそのまま行をnew.tmpに出力 説明 カウント・・・毎日加算処理をしカウントを上げていく (よってnew.txtのカウントは必ず "1") 使用量・・・ファイルの使用量 ファイル名・・・ファイル名 上記のようなことは出来るでしょうか? diff・grep・sedとか調べてみたんですが融合技が見当つかず・・・ よろしくお願いします。
- satoru912
- お礼率100% (4/4)
- Linux系OS
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>diff・grep・sedとか調べてみたんですが融合技が見当つかず・・・ 惜しい(?)。awkです。 A[]にカウント、B[]に使用量を足していきます。 awk '{A[$3]+=$1;B[$3]+=$2}END{for(i in A)print A[i],B[i],i}' old.txt new.txt > new.tmp new.tmpは順不同になるので、ファイル名でソートするなら、sort +2 してください
関連するQ&A
- 文字列の並べ替え
以下のようなテキストがあります。 AAAAAA BBBBBB CCCCCC DDDDDD CCCCCC BBBBBB BBBBBB DDDDDD AAAAAA これを↓のように横軸で並べ替えたいのです。 AAAAAA BBBBBB CCCCCC BBBBBB CCCCCC DDDDDD AAAAAA BBBBBB DDDDDD 使えるツールとしてはGoogleスプレッドシートです。 なにかいい手順はないでしょうか。
- ベストアンサー
- その他(ソフトウェア)
- グループ毎に通番を付与して返すSQLを教えて下さい
下記の「テーブル1」から、 テーブル1 商品名|価格 ------------ AAAAAA|1000 AAAAAA|1200 AAAAAA|1500 BBBBBB|2100 BBBBBB|2600 CCCCCC|2000 DDDDDD|3000 EEEEEE|6000 EEEEEE|6000 EEEEEE|7000 EEEEEE|7500 下記のように出力するにはどのようにSQLを書いたらいいでしょうか。 商品名|価格|通番 ------------------ AAAAAA|1000|1 AAAAAA|1200|2 AAAAAA|1500|3 BBBBBB|2100|1 BBBBBB|2600|2 CCCCCC|2000|1 DDDDDD|3000|1 EEEEEE|6000|1 EEEEEE|6000|2 EEEEEE|7000|3 EEEEEE|7500|4 要するに、「商品名」ごとに、「価格」で昇順にソートして「通番」をつけたいのです。 なお、上記「EEEEEE」には価格が6000のレコードが2つありますが、「通番」はそれぞれ1と2をふっています。 このように、価格が同じレコードがある場合にもカウントアップさせて通番を付与したいです。 ご回答よろしくお願い致します。
- 締切済み
- MySQL
- perlプログラム 外部複数ファイルの読み込み処理について
perlプログラム 外部複数ファイルの読み込み処理について あるフォルダに T0001_05_01,T0001_05_02,T0001_05_03,…,T0001_05_31 という31個のファイルがあります。 それぞれのファイルは 下記のような 形式で記述されております。 (例 T0001_05_01のファイルの中身) 2010-05-01 00:00:00.000 N00001 AAAAAA 2010-05-01 00:00:00.108 N00018 BBBBBB 2010-05-01 00:00:10.305 N00002 AAAAAA 2010-05-01 01:00:10.966 N00008 CCCCCC … また、別のlist.txtに 下記のようなユニークなリストが入っております。 AAAAAA CCCCCC WWWWWW … このとき、list.txtの値が それぞれT0001_05_XXファイルの何行目に出力されているか 出力するperlプログラムを作成したい。 (出力結果イメージ:1ファイル化) T0001_05_01 1行目 2010-05-01 00:00:00.000 N00001 AAAAAA T0001_05_01 3行目 2010-05-01 00:00:10.305 N00002 AAAAAA … T0001_05_31 10行目 2010-05-31 03:00:00.999 N00400 AAAAAA T0001_05_01 4行目 2010-05-01 00:00:00.000 N00008 CCCCCC … perlプログラム知識がないものなので、このようなファイルの出力の仕方がわかりません。 教えていただけると助かります。
- ベストアンサー
- Perl
- エクセルで計算方法教えてください!
大量の資料を片付けてまとめるのに手間取っています。エクセルでスムーズにまとめたいのですが、例えば… 1000件の取引先リストがあります。 AAAAAA株式会社 BBBBBB株式会社 CCCCCC有限会社 DDDDDD株式会社 EEEEEE有限会社 … 中には同じ会社がかぶっているものがあります AAAAAA株式会社 BBBBBB株式会社 CCCCCC有限会社 AAAAAA株式会社 EEEEEE有限会社 BBBBBB株式会社 … 要するにこれをソートして同じ会社の名前が2つ出てこないようにしたいのです。普通にソートしただけだと… AAAAAA株式会社 AAAAAA株式会社←同じ会社なのでいらない BBBBBB株式会社 BBBBBB株式会社←同じ会社なのでいらない CCCCCC有限会社 EEEEEE有限会社 … 100件程度なら手動で削除も頑張れますが数千件あるとさすがに無理なのでこれを判別して自動的に削除する計算方法があればどなたか教えてください!
- ベストアンサー
- オフィス系ソフト
- perl シングルコーテーションを含んだ文字編集
active perl(アクティブパール)で 以下の文字列編集を行いたいのですが、 シングルコーテーションの編集で上手く出来ずに困っています。 どなたか経験豊富な方、良いコーディング方法があれば ご教授下さい。 やりたい事としては、 文字列 aaaaaa bbbbbb cccccc dddddd といった内容を 取り込んで 'aaaaaa','bbbbbb','cccccc','dddddd' といった文字列の出力を行います。 上記の例では文字はddddddまでですが、 場合により bbbbbbまでたったりといった感じで 変換前の文字の行数は可変で、2行でも3行でも4行でも、 各行の文字をシングルコートで囲って、カンマでつなげた文字列を出力します。 上記の仕様内容で、こうすれば出来る! といったサンプルコードを教えていただけると助かります。
- 締切済み
- Perl
- SELECT結果から重複行を除く方法
下記のようなテーブルから重複なくSELECTしたいと考えています。 temp_table ------------------------ | id | name_1 | name_2 | ------------------------ | 1 | aaaaaa | bbbbbb | | 2 | cccccc | dddddd | | 3 | cccccc | dddddd | | 4 | aaaaaa | bbbbbb | | 5 | cccccc | jjjjjj | ------------------------ SELECT結果が下記の要になるのが理想です。 DISTINCTを利用して SELECT DISTINCT id, name_1 || name_2 AS name FROM temp_tableとしましたがダメでした。 --------------------- | id | name | --------------------- | 3 | ccccccdddddd | | 4 | aaaaaabbbbbb | | 5 | ccccccjjjjjj | --------------------- よい方法をご存じの方、宜しくお願いします。
- ベストアンサー
- PostgreSQL
- 複数行にわたる処理
こんばんは。perl初心者です。 どうしてもわからないので、どうかアドバイスよろしくお願いします。 一つのファイルに、以下のような3行で一組の塊がある場合、 <line_a>: aaaaaa <line_b>: BBBBBB <line_c>: cccccc <line_a>: aaaaaa <line_b>: bbbbbb <line_c>: cccccc ... <line_b>の行に文字列"BBBBBB"が含まれていたら、<line_a>の内容を"aaaaaa"から"AAAAAA"に置換してファイルを上書きしたいのですが、 どうやったらいいのでしょうか・・・。
- ベストアンサー
- Perl
- エクセルのオートフィルターにつきまして
エクセルのことでお聞きしたいことがあります。 下のような、AAAやDDDについての説明がとなりの列に複数行表示されているようなデータを作りました。 AAA aaaaaa bbbbbb cccccc DDD dddddd eeeeee ffffff そこで、AAAやDDDが書いてある列からAAAだけを選択できるようにして、 AAA aaaaaa bbbbbb cccccc のように、AAAの説明のみが表示されるようにしたいのですが、オートフィルターを使ってもうまくいきませんでした。 どなたか、良い方法をご存知でしたら、教えてください。お願い致します。
- ベストアンサー
- オフィス系ソフト
- shell diff の使い方について
shellで差分をとりたいとおもっているのですが・・・ aaa.txtの中身 ※1 aaaaaa_xxx.c ※2 bbbbbb_yyy.c . . . bbb.txtの中身 ※1 aaaaaa.c ※2 bbbbbb.c . . . aaa.txt、bbb.txtそれぞれに200近くのファイル名のみが入っています。 両方のテキストファイルを読み込み、それぞれの※1と※1、※2と※2というふうに 差分を見ていきたいと思っています。行はすべてバラバラです。 差分を見たい対象になる基準は・・・ 例えば、※1であればaaaaaaの部分が同じなので。 (ディレクトリもそれぞれファイルごとにばらばらです) ついでに差分の行数も出力したいと考えています。 なにか良い方法を教えていただけませんでしょうか? shellでつくりたいと思っています。 どうかよろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- シェルスクリプトで・・・
シェルスクリプトで・・・ 下記のファイル内にある "yy:mm:dd" 部分を "finish - start" として "aaaaaa" "bbbbbb" "cccccc" ・・・を秒単位で抽出させたいと考えています。 □ ファイル 2010-09-01 08:19:10 aaaaa : start. 2010-09-01 08:19:28 aaaaa : finish. 2010-09-01 08:19:28 bbbbb : start. 2010-09-01 08:30:07 bbbbb : finish. 2010-09-01 08:30:11 ccccc : start. 2010-09-01 08:43:45 ccccc : finish. ・・・・・・・・・・・・・・・・・(ry □ 結果のイメージはこうです。 aaaaaa 17 bbbbb 639 ccccc 814 環境は、centos5 を使っております。 どなたかご教授おねがいします。
- ベストアンサー
- その他(プログラミング・開発)
お礼
早急な回答有難うございます! awkだったんですね・・・。(というものの、聞いたことはあるレベルです・・・) まだシェル初心者ということもあり回答していただいた内容がまだ全く理解出来ていないのが現状なので、今から調べて試したいと思います。
補足
無事出力することが出来ました。 ありがとうございました。