Thanks for the tip on MetaKit avia< I have been searching for something like this.

I looked at rdb, but they wanted $300 plus for a single site liscense (or close to it) for a shell interface to a flat file based DB. A little high. Have you worked with
Metakit as a backend for web services?
pankajpanjwani,
I have a little script that approximates what bong was talking about, it is not very elegant either, but..
#!/usr/bin/tclsh
set all_mats {}
proc fwline {file pat {p "0"}} {
global all_mats
set i 0
if {$p == 0} {
puts "Inside id run."
catch {set fd [open "$file" r+]} err_opened
while {![eof $fd] && [gets $fd line] > -1} {
incr i
puts "Looking at line #$i, $line."
if {[string match "*$pat*" $line]} {
#puts "Match at [tell $fd]"
#could use regexp for better searches
set r [tell $fd]
#file byte offset
append all_mats "$r:$line\n"
#building an acceptable format
#an array would be easier, but started with a list
#and was determined to do it that way.
}
}
close $fd
puts "Looking at info: $all_mats."
fwline $file "" $all_mats
#recursive recall with new arguments
} elseif {$p != 0} {
catch {set fd [open "$file" r+]} err_opened
regsub -all "\{" $p "" p
#need to kill the list open bracket: we don't care
#about the end
foreach seg [split $p "\n"] {
#rebuilding outer
foreach {el obj} [split $seg ":"] {
#selecting from inner
seek $fd $el start
#goto file string ptr
puts stdout "Changing line content: $obj."
#lets us see what we are about to change
#would be much cooler to write this to the
#users buffer space, edit it there and then copy
#it back TODO...
set rr [gets stdin]
#replacement string
puts -nonewline $fd $rr
#replaces line at location
flush $fd
#writes to file buffer
}
}
}
return
}
fwline [lindex $argv 0] [lindex $argv 1]