awkでデータ抽出:該当するデータを1週間以内に絞り込む方法

このQ&Aのポイント
  • awkを使用して、処理日から1週間以内に該当するデータを抽出する方法を教えてください。
  • 処理日は毎日変わるため、それに合わせてデータを絞り込みたいです。
  • 入力データから処理日より1週間以内のデータを出力するawkの記述例を教えてください。
回答を見る
  • ベストアンサー

awkで、該当するデータを抽出する方法

データを読み込み、処理日より1週間以内に該当するデータのみ出力したいのですが、awkの組み合わせで可能でしょうか? 処理日は、毎日起動するため変更となります。 記述例を書いていただければ、非常に助かります。 宜しくお願いいたします。 (仮処理日) 2003/6/13 (入力データ) 1 aaaa 100 15-Jun-2003 2 bbbb 200 16-Jun-2003 3 cccc 300 18-jul-2003 4 dddd 400 30-jul-2003 (出力結果) 1 aaaa 100 15-Jun-2003 2 bbbb 200 16-Jun-2003

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

  • ベストアンサー
  • damejan
  • ベストアンサー率30% (58/192)
回答No.1

awkは知らないので、bashで作ってみました。 ------------------------------------------ #!/bin/bash max_day=$1 file=$2 today=$(date --date='today 0:00' +%s) for line in $(cat $file | tr ' ' ','); do day=$(echo $line | cut -d',' -f4) day=$(date --date=$day +%s) period=$(( ($day-$today)/(24*3600) )) if (( 0 <= $period )) && (( $period < $max_day )); then echo $line fi done ------------------------------------------ 適当な名前で保存し、実行パーミッションを与えてください(例えば、data_print.sh)。コマンドラインから data_print.sh N datafile と打ってください。N日以内のデータを表示します。Nを7とすれば7日以内のデータを表示します(処理日を1日目として数えています)。

その他の回答 (2)

  • damejan
  • ベストアンサー率30% (58/192)
回答No.3

>Solaris版のGNU dateは存在するのでしょうか? GNUのサイトからソースを取ってきて、コンパイルすればできるんじゃないかな。手元にSolarisがないから確認できないけど。

  • damejan
  • ベストアンサー率30% (58/192)
回答No.2

#1の補足です。 #1のシェルスクリプトで使っているdateコマンドは、GNUのdateコマンドです。Solarisのdateコマンドはフォーマットオプションに%sが使えなかったような気がしますので、Solaris上では動かないと思います。Linuxで動作は確認してあります。

isshou-s
質問者

お礼

回答ありがとうございました。 無事、起動確認できました。 ところで、Solaris版のGNU dateは存在するのでしょうか?

関連するQ&A

  • UNIXで文字列分割

    UNIXでマルチバイトの文字列で分割したいです。 例) aaaa bbbb cccc dddd eeee ffff ↓ [bbbb]で分割 [1]aaaa [2] cccc dddd eeee ffff できればawkで処理をしたいと考えています。

  • 表の抽出方法を教えてください

    :::::::::::::::::::::::::::::aaaa::::bbbb::::cccc::::dddd :::0~1000::::::::::::::700:::::800:::::900::::1000 1001~2000:::::::::800:::::900::::1000::::1200 2001~3000::::::1000::::1300::::1600::::1800 上記のような表で1400のbbbbの時に900を抽出する方法を教えてください

  • SQLの書き方について教えてください。

    accessについて。 シートの中に列名name、列名friendnameがあります。 name,friendname aaaa,bbbb bbbb,cccc cccc,aaaa dddd,aaaa eeee,bbbb ffff,eeee ほしいデータは aaaa,bbbb,cccc bbbb,cccc,aaaa cccc,aaaa,bbbb dddd,aaaa,bbbb eeee,bbbb,cccc ffff,eeee,bbbb と友達の友達の名前がほしいのです。 SQLの書き方を教えてください。 よろしくお願いします。

  • ACCESSにて2つのテーブルの比較

    2つのテーブルA,テーブルBがあります。テーブルBのデータ以外のデータを選ぶにはどうのようにすれば良いのでしょうか? テーブルA data--- aaaa bbbb cccc dddd aaaa cccc テーブルB data--- aaaa bbbb 欲しい結果 テーブルA data--- cccc dddd cccc よろしくお願い致します。

  • [Excel]重複データの一方のセルが持つ値を一方の空白セルに反映させたい

    A列にある7000件ほどのデータの中から重複データのみを抽出し、 重複データの一方がB列に持つ値を、もう一方のデータのB列の空白セルに反映させたいのですが、方法はありますでしょうか? 「COUNTIF」を使って重複データの抽出はできますが、一方が持つデータをもう一方の空白に反映させることができません。 手作業では期限に間に合わない可能性がみえて焦っております。 恐縮ですがご教授いただけますでしょうか。 (例) [処理前] A列:B列:C列 1111:AAAA:aaaa 2222:BBBB:bbbb 3333:CCCC:cccc 1111:    :dddd 2222:    :eeee [処理後] A列:B列 1111:AAAA:aaaa 1111:AAAA:dddd 2222:BBBB:bbbb 2222:BBBB:eeee

  • JSPとHTMLでの入力データ・図形出力

    JSPを初めたばかりでよくわからない点が有りお教えください  HTMLの入力フォームから入力したデータで横(または下)の図形表示領域に  JSPで入力データを受け取り、図形(線、文字)を出力したいと考えています  ここの処理は下記内容で動作しましたが、この組合せを行いたいと考えています  1.JSPに入力データ引き渡し  aaaa.html  <form action="bbbb.jsp" method="post">  <input type="submit" value=" ">  </form>  bbbb.jsp:入力データの受け取り  2.JSPでの図形出力  cccc.html  <img src="dddd.jsp">  dddd.jsp:図形出力

    • ベストアンサー
    • Java
  • "/"でセル内の文字を縦に分割するマクロについて

    マクロ作成の為に、ご協力下さい。 このようなデータが1つのセル内にあります。 aaaa/bbbb/cccc/dddd このセルに対して、"/"があったら下のセルに入力するようにしたいです。 aaaa bbbb cccc dddd どのようにしたら良いか見当がつきません。。。 よろしくお願いいたします。 ※区切り位置の機能を縦に使うようなイメージです。

  • uniqとループを使用しないで、文字列のフィルターの方法

    表題の件にて、質問です。 bashでshを作成しています。いろいろ試しているのですが、 UNIXのコマンドで、uniqコマンドがありますが、それと同じことをsed又は、awk等を使用して、作成することは可能でしょうか? 作成が可能であれば、記述方法を教えてくださいませ。 ※ループ文を使用しないで、出来るだけ完結なコマンド文にしたい。 例: file.txt 以下中身 ---------------------- AAAA BBBB BBBB CCCC CCCC ----------------------- ↓ AAAA BBBB CCCC の3文字のみを出力したい。 ご存知の方いらっしゃいましたら、ご教示ください。

  • エクセルで重複しているデータの抽出のしかたを教えてください。

    エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。 A列に日付 B列に企業名このデータが300件ほどあります。  Å列      B列 1月 1日    AAAA社 1月 4日   BBBB社 1月 8日   CCCC社 2月 1日   BBBB社 2月20日    DDDD社 3月 2日   AAAA社 と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。 これを簡単に抽出する方法はないでしょうか? 教えてください お願いいたします。

  • access で 方法を教えてください。

    access で 方法を教えてください。 テーブルは セミコロン区切りで、区切られて表示されています (テーブル例)  1 aaaa;bbbb;cccc;dddd;eeee;ffff 2000byte 2 aaaa 300byte 3 bbbb;cccc;ffff 3000byte 4 ffff;dddd 120byte このセミコロン区切りの区切られたデータの 「件数」と「バイト」を表で表示させる方法を教えて欲しいのです。 上記テーブル例を使用しての(抽出例)  抽出条件    ↓   aaaa 2件 2500byte   bbbb 2件 5000byte  cccc 2件 5000byte   dddd 2件 2120byte   eeee 1件 2000byte   ffff 3件 5120byte 宜しくお願いします。