C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ファイルの必要部分だけを取り出すプログラム


(過去ログ 110 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■65510 / inTopicNo.1)  ファイルの必要部分だけを取り出すプログラム
  
□投稿者/ rinngo (1回)-(2013/03/05(Tue) 07:56:55)

分類:[C#] 

c#で以下のような処理をさせたいと考えています。
フォルダやファイルの扱いがまだ未熟なので、アドバイス頂けると助かります。


1.あるフォルダ内にある拡張子(例.txt)のファイル全てに対して行わせたい。
  
  たとえば、C:\\TESTフォルダ内に、abc.txtとcde.txtがあるとします。
  (例では2ファイルしかありませんが、実際はフォルダ内に幾つのファイルが存在するかは分からない状態です。)


2.output.txtというファイルに必要情報のみ抜き出してwriteさせたい。
  
  例えば、抜き出したいデータは、「ファイル名」と「paramから始まる行を全て抜き出す」「LOAD 70 で始まる行を全て抜き出す」等
 
  ※抜き出したいデータは、ある決まった文字で必ず始まっています。


【ファイル構成のサンプル】

1のabc.txtのファイルの中身の構成はこんな感じです。
(cde.txtファイルも同じような感じですが、ファイルによってparamがLOADの後に来ていたり等、前後している場合もあります。)


$..
param abcd
param cdef
param fghi
$-------------------------------------------------------------------------------
$..
$.. LOADS
$ LOAD1
LOAD 10 2.0 1.0 1
LOAD 20 10.0 1.0 1
LOAD 30 20.0 1.0 1
LOAD 40 30.0 1.0 1
LOAD 50 40.0 1.0 1
LOAD 60 50.0 1.0 1
LOAD 70 60.0 1.0 1

$------1$------2$------3$------4$------5$------6$------7$------8$------9$-----10
FORCE 1 9300001 1. 0. 0. -1.0


※ちなみに、1のファイルは約10000行ある場合もあります。
※フォルダ内に.txtファイル(処理の該当ファイル)は約90個ほど存在します。


2のoutput.txtは必要事項のみ抜き出したファイルです。(例えばこんな構成で出力したいです。)

abc.txt ←ファイル名
param abcd ←以下は必要部分のみ抜き出したもの
param cdef
param fghi
LOAD 70 60.0 1.0 1

cde.txt ←ファイル名
param aaaa
param bbbb
param cccc
LOAD 70 70.0 2.0 1

※指定したフォルダ内にファイルが存在する数だけ続ける

引用返信 編集キー/
■65511 / inTopicNo.2)  Re[1]: ファイルの必要部分だけを取り出すプログラム
□投稿者/ shu (210回)-(2013/03/05(Tue) 08:08:28)
No65510 (rinngo さん) に返信

DirectoryInfo.GetFilesなどで該当ファイルを検索
StreamReaderなどでファイルをひらき
ReadLineやReadToEndでファイル内容を読込み
(該当行が先頭部に集中しているならReadLine、ファイルの後ろの方に
ある可能性も高いならReadToEndがよいと思います。今どきのPCであれば10000行程度なら
十分読めるのではないでしょうか)
行毎に解析し
StreamWriterでファイルに書き出す

といった感じです。

引用返信 編集キー/
■65531 / inTopicNo.3)  Re[2]: ファイルの必要部分だけを取り出すプログラム
□投稿者/ 774RR (57回)-(2013/03/06(Wed) 08:47:55)
プログラムを開発することが目的なら別だが、
探すことが目的であるなら開発する時間が惜しい気がするので
ふつーに grep でも使うといいだろう。

grep -e '^LOAD 70' -e '^param' *.txt > output.txt

探す元ファイルと同じディレクトリに output.txt を出力してしまうと
再度の検索時に output.txt も検索対象に入るので、その辺は要考察

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -