SQL ダンプの行を含むファイルがあります。形式の日付がありますyyyy-mm-dd
(例: 2012-08-13
)
これらすべての日付をマーカーに置き換えて、将来、その時点の日付を中心にすべての行をデータベースに入力できるようにしたいと思います。
例えば
2012-08-13
のようなものとして保存されるように変更したい$$MAINDATE$$
2012-08-14
なりたい$$MAINDATE+1$$
このようにして、それらはすべて単一の日付に関連して保存され、データは新しい作成日から前後に意味をなします。
次に、ファイルを反復処理し、その時点での引数に基づいてすべてを新しい日付に置き換えたいと思います。そして、+1 または +100 に基づいて調整された日付、またはそれが最後になるまでの日数。
マッチテキストは/\d{4}-\d{2}-\d{2}/
しかし、古いテキストを取り上げて置き換える新しい用語と一致するテキストを置き換えるにはどうすればよいでしょうか?
アップデート:
これを使用して、マーカーを日付に戻しました..きれいだとは思いませんが、機能しているとは思えません
#iterate each line and look for the marker
while (line = infile.gets)
str = line
#replace marker with data modified by the modifier
rules = Hash[str.scan(/(\$\$MAINDATE(\+|\-)\d{1,5}\$\$)/).uniq.collect do |e|
modifyValue = e[0].split(e[1])[1].gsub("$","").to_i
if e[1] == "-" then
modifyValue = modifyValue * -1
end
[e[0], (today + modifyValue).to_s]
end ]
rules.each do |key, value|
str.gsub!(key, value)
end
#write new line to array
finishedText.push str
end