• ベストアンサー

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

ファイル内に書かれた「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

専門家に質問してみよう