• ベストアンサー

数字データを日付に変更する。

ファイル内に書かれた「20070612.log」の20070612を日付データとしてみなし2007/06/12として置換し取り出したいのですがどのようにすればよいでしょうか??

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

質問の仕方がわるい。 >置換し取り出したい 取り出す・・・といわれても何のプログラムでどうデータを使いたいか 書かないとなにをやりたいかあいまいすぎて・・・。 そのファイルには「20070612.log」とだけ書かれているのですか? それを日付形式で表示すればよいのですか?

starpochi
質問者

補足

すいません。具体的には各行の所定の位置にある日付けデータが test_20070521.log:XXXX~ test_20070522.log:XXXX~      ・      ・      ・ の様に書かれています。このデータから日付を取り出し別のファイルに 2007/05/21 2007/05/22の様に出力したいのです。

その他の回答 (3)

  • lunarosa
  • ベストアンサー率73% (30/41)
回答No.4

すみません。ちょっとこれまでの操作経緯を確認させてください。ANO.2 補足欄に書かれていました下記コメントですが、 > ...実際にDOSプロンプトからそのまま実行してみたところ... ここは「Linux カテゴリ」だけに、てっきり "DOSプロンプト" から Linux マシンにリモートログインしてからのお話、...と私は認識していました。ですが、今回頂きました下記補足部には、「D:\」とあります。これは、そのまんま言葉のとおり "DOSプロンプト" つまり、Windows上の話ですか? > ■コマンドライン > D:\デスクトップ\10_RLログ解析\rlsp_log\テスト... Windows には標準で sed は無いと思いますが私の思い違いでしょうか(もし、あったのなら自分自身の無知にちょいショック)。それとも Windows 用に移植された sed grep awk などを導入しているとか、そういったことですか? まぁ、Windows での話ということであれば「\」がパス区切りで使われるので、「\」をさらに処理する必要がありそうですね。

starpochi
質問者

補足

Windowsパソコンですが、ServicesForUnixをインストールしてありますので、Unix系のコマンドが使用できます。

  • lunarosa
  • ベストアンサー率73% (30/41)
回答No.3

No.2 です。 上手くいきませんか? 手元で確認すると以下の結果を得ましたが...。 ■ -*- ファイル「sample」の中身 -*- XXXXtest_20070521.log:XXXX XXXXtest_20070522.log:XXXX shell> sed "s/.*test_\(....\)\(..\)\(..\)\.log.*/\1\/\2\/\3/" < sample 2007/05/21 2007/05/22 ところで、下記エラーが発生したときのコマンドラインを補足(copy&paste)して頂けますか? 失礼ですが「/」と「\」の組合せが一寸気になります。 > sed: 1: "s/.*test_/(..../)/(../)/...": bad flag in substitute command: ')'

starpochi
質問者

補足

情報が足りなくてすいません。 実際のコマンドラインです。 ■vvv1.txtの中身 XXtest_20070507.log,XXXXXXX  XXtest_20070507.log XXXXXX XXtest_20070508.log,XXXXXXX  XXtest_20070507.log XXXXXX ■コマンドライン D:\デスクトップ\10_RLログ解析\rlsp_log\テスト>sed "s/.*test_\(....\)\(..\)\(..\)\.log.*/\1\/\2\/\3/" < vvv1.txt sed: 1: "s/.*test_/(..../)/(../)/...": bad flag in substitute command: ')' 実際の所、このvvv1.txtで1行には2つ以上のXXtest_20070507.log が入っており、これらを2007/05/07の様に置換し、別のファイルに XXtest_2007/05/07.log,XXXXXXX  XXtest_2007/05/07.log XXXXXX XXtest_2007/05/08.log,XXXXXXX  XXtest_2007/05/07.log XXXXXX の様に出力したいと考えています。 よろしくお願い致します。

  • lunarosa
  • ベストアンサー率73% (30/41)
回答No.2

補足欄に記されているように、データフォーマットが全体を通して統一されているという前提です。何通りもやりようはありますが、一つには以下のものがあります。 sed "s/.*test_\(....\)\(..\)\(..\)\.log.*/\1\/\2\/\3/"< 入力ファイル> 出力ファイル

starpochi
質問者

補足

回答ありがとうございます。実際にDOSプロンプトからそのまま実行してみたところ sed: 1: "s/.*test_/(..../)/(../)/...": bad flag in substitute command: ')' というエラーがでてしまいました。 私の方でも調査いたします。 他の方法はないでしょうか?

関連するQ&A

  • アクセスのフィールド内のテキストデータ(一部)を日付の型に変更。

    こんにちは。質問です。 とあるシステムのログを分析するにあたって、ログとして送られてきたデータ(csv)が大量にあり、(100個のファイルに分割して送られてきました)合計約82万件(200M)をアクセスのテーブルに手作業で追加していきました。 その後、フィールド1のデータが"Tue Jul 27 09:57:01 2004 JST"となっているのを、日付(標準)の形"2004/07/27 09:57:01"にすることになりました。 もともとの"Tue Jul 27 09:57:01 2004 JST"はテキストデータです。 エクスポートして、エクセルなどにしてデータを操作しようとしたところ、データが大きすぎてエクスポートもできませんでした。(テキストファイルにはなりました。が、テキストファイルからエクセルファイルには変更できませんでした) こんなことが可能かどうかもわかりませんが、 このテキストデータを日付型に替えられるようでしたら、方法を教えてください。よろしくお願いします。

  • エクセルで数字データを日付けにしたい

    数値として20030608と入力されているデータを日付けデータとして、2003年6月8日としたい。 15日後は何月何日になるかとの計算をするために日付けに変える必要があると認識しているのですが 単純に20030608+15日だと20030623だけど +30日だと20030638となってしまう これを20030708とか2003/7/8としたいのです。 教えてください。

  • 数値データを日付データとして扱いたい。

    違うDBからファイルをDLしてきて、テーブルに入れているデータがあります。 その違うDBの日付データが分割してインポートされてしまいます。   2 | 9 | 18 ↑こんな感じです。 これを日付データとして扱いたいのです。(2002/09/18というように。) 表示だけでしたらクエリーとかに [年]&"/"&[月]・・ とかってやればいいのですが、そうではなくて、日付のデータとしたいのです。 Excelですと「Date」関数というのがあって、それに 「Date(年,月,日)」と入れれば、日付データとなると思うのですが、Access にはこのような関数はないのでしょうか?

  • MySQLの日付データとPHPの日付データの比較

    どうもこんにちは。現在PHPでブログを作成して運営しているのですが、最新の記事に、一定期間だけ「NEW」といった表示をする方法がわからなくて困っています。ここの過去ログにも類似の投稿はあったのですが、タイトルのようにデータベースの日付データ型とPHPの日付データ型を比較する方法がわかりません。どなたか、アドバイスをいただけないでしょうか。よろしくお願いします。

    • ベストアンサー
    • PHP
  • 日付データーから月の数字を取り出したいのですが・・・

    Windows98でエクセル2000を使っています。 シート上にある多くの日付データーから、その日付が1月・7月・8月・12月の場合、月の数字を取り出したいのですが、方法が解かりません。 文字・数値のいずれでもよいので、簡単な方が嬉しいです。 ご回答の程、宜しくお願い致します。             

  • エクセル関数で日付データを扱うには

    SUBSTITUTE関数を使って以下のような条件で得たい結果を求める場合 C2セルに「=SUBSTITUTE($B2,$B$1,$A2)」と入力すると「今日の日付は42875です」 という表示になってしまうのですが、日付形式で「今日の日付は2017/5/20です」 と表示させるにはどうしたらいいでしょうか? ■条件 得たい結果(C2セル) 今日の日付は2017/5/20です A2セル 2017/5/20 B1セル 置換 B2セル 今日の日付は置換です

  • 日付/時刻型フィールドで時刻データのみを扱うには?

    アクセスのテーブル管理について質問させてください。 現在アクセス上で処理しているテーブルの一つ、日付/時刻型フィールドには時刻データが入っています。 形式:定型入力 時刻(L) 13:12:00 このテーブルをCSVデータとしてエクスポートしたところ、1899/12/30という日付データが時刻データの前に追加されてしまいました。 定型入力をしていたので日付データは扱われないものだと思っていたのですが、見えない部分で日付データも扱われていたということですね。 これを日付/時刻型フィールドのまま時刻データのみを扱う様にするにはどのようにしたらよいのでしょうか? 具体的には、アクセス上で作成した時刻データを含む計測値を日付毎のCSVファイルとしてエクスポートし、後に必要になった場合指定された日付のファイルをインポートします。 よって日付データは必要ないので時刻データのみで管理をしたい、ということです。 レコード数が多いため、ファイル容量を減らすためデータはなるべく少なくしたいのが実情です。 それでも必要ない日付データを加えておいた方がよいのでしょうか? よろしくお願いいたします。

  • エクセルでマクロを用い日付をテキスト化したいのですが。

    エクセルで日付をテキスト化するのに、マクロをつかって自動化させたいと考えています。 以下のようなデータを扱っています。 日付  その他  その他  その他 2007/4/26 2007/4/28 2007/5/12 2007/6/12 こういったデータがあり、日付の列を選択し、置換→200を'200にすることで日付をテキスト化したいと思っています。 マクロを作成中は問題なく、置換し、テキスト化が出来ますが。 一度日付データを消し、日付を入れてマクロを実行すると 4/26/'2007 4/28/'2007 5/12/'2007 6/12/'2007 といった感じで実行され、正しくテキスト化されません。 質問にお答えしていただけると大変ありがたいです。 よろしくお願いします。 ※ちなみにマクロは自動記録方式のみで作っています。VBAは修正程度の知識しかないです。

  • EXCELでマクロを用い日付をテキスト化したいのですが。

    エクセルで日付をテキスト化するのに、マクロをつかって自動化させたいと考えています。 以下のようなデータを扱っています。 日付  その他  その他  その他 2007/4/26 2007/4/28 2007/5/12 2007/6/12 こういったデータがあり、日付の列を選択し、置換→200を'200にすることで日付をテキスト化したいと思っています。 マクロを作成中は問題なく、置換し、テキスト化が出来ますが。 一度日付データを消し、日付を入れてマクロを実行すると 4/26/'2007 4/28/'2007 5/12/'2007 6/12/'2007 といった感じで実行され、正しくテキスト化されません。 質問にお答えしていただけると大変ありがたいです。 よろしくお願い致します。 ※ちなみにマクロは自動記録方式のみで作っています。VBAは修正程度の知識しかないです。

  • エクセルで日付を数値データに

    エクセルで「日付データ」を表示の変更ではなく「数値データ」に変換したいのですが何か良い方法はありますか? 例えば「20070730」と表示された日付データを別ファイルにコピーして「20070730」と数値データにしたいんです。 ※ためしに表示を「数値」にしたら「32792」としてシリアル値が表示されてしまいます。