in-file search/replace question without using mv or cp 
Author Message
 in-file search/replace question without using mv or cp

I've been poking around the comp.lang.awk archives trying to find
something that will work for me, but no such luck.  Here's the
situation.

I am in a chroot.  I need to perform search and replace on several
property
files with many restrictions on how I can do so (see below).  A
property file would be a simple name/value pair, like:

USER=don

I need to write a script that could replace the value in the property
file.  The result might look like:

USER=west

Again, I'm in a chroot, so I only have specific commands available.  I
cannot use perl, cp, mv, chmod, chown, or a whole bunch of other stuff
because either (a) they aren't in the chroot, or (b) they are not
allowed for security reasons (don't ask).  I can use awk and sed, and
I do, but the powers that be assure me that using mv and cp are not
allowed in this environment.

So what I need is a way to change the contents of the file in-file.  I
can't use awk to generate the result to a temp file and use mv or cp
to replace the original.  Again, not allowed.

Here is what is in the bin directory in the chroot.  Disregard mv and
cp.  I can't use 'em.

awk         csh         fgrep       lp_1251     rm          tee
basename    cut         file        ls          rmdir       touch
bzcat       date        gettext     mkdir       sed         tr
cat         df          grep        mv          sh          uname
chgrp       diff        head        nawk        showrev     uncompress
chmod       dirname     id          netstat     sleep       unzip
chown       domainname  java        pkginfo     sparcv9     vi
cmp         echo        kill        pkgparam    stty        w
cp          egrep       ksh         ps          tail        wc
cpio        expr        ln          pwd         tar         zcat

Any ideas?



Tue, 14 Dec 2004 09:18:13 GMT  
 in-file search/replace question without using mv or cp

% So what I need is a way to change the contents of the file in-file.  I
% can't use awk to generate the result to a temp file and use mv or cp
% to replace the original.  Again, not allowed.

Use nawk to create a temp file, use cat to replace the original. Use rm
to tidy up. If someone says `oh, that's clever' and deletes cat, you
can use, sometimes with more than one invocation, at least awk, bzcat,
csh, cut, diff+cut, egrep, fgrep, grep, head, ksh, nawk, sed, sh, tail,
tar and tr as a stand-in for cat.

I note that vi is in your list of commands. You could use vi -e, which starts
it in `ex' mode. In posix vi, you can add -s which makes it run silently. In
either case, pipe in a list of commands to execute on the file.

I notice ed is not in your list of files, but that's what I normally use to
edit files in-place when ed/sed would do the job.

I notice that ln and rm are in your list of commands. Use nawk to create
a temp file, then use ln -f to overwrite the previous file and rm to
tidy up (or, since you're on Solaris, use rm to remove the old file, ln
to overwrite it, and rm to tidy up, because ln -f doesn't work on that
platform).

I notice that mv is in your list of commands, so you could just ignore the
people who say you can't use it and use it. If they want to stop you,
they can delete it or turn off the execute bit.

I notice that cpio is in your list of commands. I find cpio difficult, but
I'm sure there's a way of renaming files with it.

I notice that java is in your list of commands. It would take much longer,
but you could probably write a program in java which will rename a file.
--

Patrick TJ McPhee
East York  Canada



Tue, 14 Dec 2004 09:57:54 GMT  
 in-file search/replace question without using mv or cp


Quote:
> I've been poking around the comp.lang.awk archives trying to find
> something that will work for me, but no such luck.  Here's the
> situation.

> I am in a chroot.  I need to perform search and replace on several
> property
> files with many restrictions on how I can do so (see below).  A
> property file would be a simple name/value pair, like:

> USER=don

> I need to write a script that could replace the value in the property
> file.  The result might look like:

> USER=west

> Again, I'm in a chroot, so I only have specific commands available.  I
> cannot use perl, cp, mv, chmod, chown, or a whole bunch of other stuff
> because either (a) they aren't in the chroot, or (b) they are not
> allowed for security reasons (don't ask).  I can use awk and sed, and
> I do, but the powers that be assure me that using mv and cp are not
> allowed in this environment.

> So what I need is a way to change the contents of the file in-file.  I
> can't use awk to generate the result to a temp file and use mv or cp
> to replace the original.  Again, not allowed.

> Here is what is in the bin directory in the chroot.  Disregard mv and
> cp.  I can't use 'em.

> awk         csh         fgrep       lp_1251     rm          tee
> basename    cut         file        ls          rmdir       touch
> bzcat       date        gettext     mkdir       sed         tr
> cat         df          grep        mv          sh          uname
> chgrp       diff        head        nawk        showrev     uncompress
> chmod       dirname     id          netstat     sleep       unzip
> chown       domainname  java        pkginfo     sparcv9     vi
> cmp         echo        kill        pkgparam    stty        w
> cp          egrep       ksh         ps          tail        wc
> cpio        expr        ln          pwd         tar         zcat

> Any ideas?

This sounds SO much like a school assignment!  And SO much like a shell
question, not an awk question :)

SFAIK, awk doesn't support writing to a file it is reading

So why can't you use cp and mv?  Is it that you can't make new files?  If
you are allowed to make new files,  wouldn't "awk {print} oneFile >
anotherFile; cat anotherFile > oneFile; rm anotherFile", or some such, work?

If not, surely vi has a way to pipe input to it.  Have awk write a script to
perform the change using vi.

If you can't make new files, only open an existing file for rw access, then
I wonder if this is even solvable.  But the shell folks will know.

    - Dan



Tue, 14 Dec 2004 10:12:54 GMT  
 in-file search/replace question without using mv or cp


Quote:


> % So what I need is a way to change the contents of the file in-file.  I
> % can't use awk to generate the result to a temp file and use mv or cp
> % to replace the original.  Again, not allowed.

> Use nawk to create a temp file, use cat to replace the original. Use rm
> to tidy up. If someone says `oh, that's clever' and deletes cat, you
> can use, sometimes with more than one invocation, at least awk, bzcat,
> csh, cut, diff+cut, egrep, fgrep, grep, head, ksh, nawk, sed, sh, tail,
> tar and tr as a stand-in for cat.

> I note that vi is in your list of commands. You could use vi -e, which
starts
> it in `ex' mode. In posix vi, you can add -s which makes it run silently.
In
> either case, pipe in a list of commands to execute on the file.

> I notice ed is not in your list of files, but that's what I normally use
to
> edit files in-place when ed/sed would do the job.

> I notice that ln and rm are in your list of commands. Use nawk to create
> a temp file, then use ln -f to overwrite the previous file and rm to
> tidy up (or, since you're on Solaris, use rm to remove the old file, ln
> to overwrite it, and rm to tidy up, because ln -f doesn't work on that
> platform).

> I notice that mv is in your list of commands, so you could just ignore the
> people who say you can't use it and use it. If they want to stop you,
> they can delete it or turn off the execute bit.

> I notice that cpio is in your list of commands. I find cpio difficult, but
> I'm sure there's a way of renaming files with it.

> I notice that java is in your list of commands. It would take much longer,
> but you could probably write a program in java which will rename a file.
> --

> Patrick TJ McPhee
> East York  Canada


I didn't notice java in the list when I was writing my reply!  Now it's no
problem, or shouldn't be.
    - Dan


Tue, 14 Dec 2004 10:19:08 GMT  
 in-file search/replace question without using mv or cp

Quote:
> I didn't notice java in the list when I was writing my reply!  Now it's no
> problem, or shouldn't be.

Yeah, it's pretty easy to do in Java but some people prefer awk.

Michael



Wed, 15 Dec 2004 20:49:32 GMT  
 in-file search/replace question without using mv or cp
Yes, unfortunately, you need to know some serious awk-fu to write a gawk
extension to add functions to do in-place editing, and these would be a C
project in themselves.  I'm not aware that any other awks could even do
this.  gawk, so far as I know, only does filtering, not in-place file
manipulation...and the poster pretty well states that in-place file
manipulation is required, since all of the easy ways to handle file
replacement with filters have been removed from the envionment.

Although, I have though of a way that might suffice in awk; I will post it
as a top-level reply to this thread.  Basically, read the whole file in the
Big Loop, manipulate it, save it...then in the END, rewrite the saved data
to the file.  But this leaves a very unsafe stage where most of the data
resides only in memory.

    - Dan


Quote:
> > I didn't notice java in the list when I was writing my reply!  Now it's
no
> > problem, or shouldn't be.

> Yeah, it's pretty easy to do in Java but some people prefer awk.

> Michael



Wed, 15 Dec 2004 22:58:36 GMT  
 in-file search/replace question without using mv or cp

Quote:
> I've been poking around the comp.lang.awk archives trying to find
> something that will work for me, but no such luck.  Here's the
> situation.

> I am in a chroot.  I need to perform search and replace on several
> property
> files with many restrictions on how I can do so (see below).  A
> property file would be a simple name/value pair, like:

> USER=don

> I need to write a script that could replace the value in the property
> file.  The result might look like:

> USER=west

> Again, I'm in a chroot, so I only have specific commands available.  I
> cannot use perl, cp, mv, chmod, chown, or a whole bunch of other stuff
> because either (a) they aren't in the chroot, or (b) they are not
> allowed for security reasons (don't ask).  I can use awk and sed, and
> I do, but the powers that be assure me that using mv and cp are not
> allowed in this environment.

> So what I need is a way to change the contents of the file in-file.  I
> can't use awk to generate the result to a temp file and use mv or cp
> to replace the original.  Again, not allowed.

> Here is what is in the bin directory in the chroot.  Disregard mv and
> cp.  I can't use 'em.

> awk         csh         fgrep       lp_1251     rm          tee
> basename    cut         file        ls          rmdir       touch
> bzcat       date        gettext     mkdir       sed         tr
> cat         df          grep        mv          sh          uname
> chgrp       diff        head        nawk        showrev     uncompress
> chmod       dirname     id          netstat     sleep       unzip
> chown       domainname  java        pkginfo     sparcv9     vi
> cmp         echo        kill        pkgparam    stty        w
> cp          egrep       ksh         ps          tail        wc
> cpio        expr        ln          pwd         tar         zcat

> Any ideas?

I was thinking...there is a straightforward but dangerous way to do this in
awk; it involves overwriting the existing file, if you are allowed to do
that.  Basically, read the file into memory, then write it back out over
itself from scratch.  But this means that for a brief instant, the file will
exist only in RAM.

This code complicates the issue a little, so that it can maintain the awk
"contract" that multiple files can be processed on the command line.  If you
always promise to pass only one file, the code can be simplified and greatly
reduced in size--especially if you don't need the error checking I did.

    - Dan

replval.awk
---------
    function dumpFile(filename, data, lineCnt, local, i, r) {
        if (r = filename != "") {
            for (i = 1; i <= lineCnt; i++)
                print data[i] > filename
            close(filename)
        }
        return r
    }

    BEGIN {
        OFS = FS = "="
        if (ARGC < 4) {
            print "replval.awk <old> <new> <file>..."
            exit
        }
        old = ARGV[1]; delete ARGV[1]
        new = ARGV[2]; delete ARGV[2]
        # print "Replacing R/E \"" old "\" with string \"" new "\"."
    }

    FILENAME != lastFilename {
        dumpFile(lastFilename, file, lineCnt)
        lineCnt = 0
        lastFilename = FILENAME
    }

    (NF > 2) { print FILENAME " (" FNR "): \"=\" in data." }
    (NF == 1) { print FILENAME " (" FNR "): No value for key." }
    (NF == 2) { sub(old,new,$2) }
    { file[++lineCnt] = $0 }

    END {
        dumpFile(lastFilename, file, lineCnt)
    }

prop1 (before)
----------
    USER=Dan
    USER=McP
    USER=Patrick
    USER=Michael

prop2 (before)
----------
    USER=dan
    valid
    FORMULA = PAY >= 15

(output)
----------
    >awk -f replval.awk dan Bill IGNORECASE=1 prop1 prop2
    prop2 (2): No value for key.
    prop2 (3): "=" in data.

prop1 (after)
----------
    USER=Bill
    USER=McP
    USER=Patrick
    USER=Michael

prop2 (after)
----------
    USER=Bill
    valid
    FORMULA = PAY >= 15



Wed, 15 Dec 2004 23:59:39 GMT  
 in-file search/replace question without using mv or cp

Quote:



>> I've been poking around the comp.lang.awk archives trying to find
>> something that will work for me, but no such luck.  Here's the
>> situation.

>> I am in a chroot.  I need to perform search and replace on several
>> property
>> files with many restrictions on how I can do so (see below).  A
>> property file would be a simple name/value pair, like:

>> USER=don

>> I need to write a script that could replace the value in the property
>> file.  The result might look like:

>> USER=west

>> Again, I'm in a chroot, so I only have specific commands available.  I
>> cannot use perl, cp, mv, chmod, chown, or a whole bunch of other stuff
>> because either (a) they aren't in the chroot, or (b) they are not
>> allowed for security reasons (don't ask).  I can use awk and sed, and
>> I do, but the powers that be assure me that using mv and cp are not
>> allowed in this environment.

>> So what I need is a way to change the contents of the file in-file.  I
>> can't use awk to generate the result to a temp file and use mv or cp
>> to replace the original.  Again, not allowed.

>> Here is what is in the bin directory in the chroot.  Disregard mv and
>> cp.  I can't use 'em.

>> awk         csh         fgrep       lp_1251     rm          tee
>> basename    cut         file        ls          rmdir       touch
>> bzcat       date        gettext     mkdir       sed         tr
>> cat         df          grep        mv          sh          uname
>> chgrp       diff        head        nawk        showrev     uncompress
>> chmod       dirname     id          netstat     sleep       unzip
>> chown       domainname  java        pkginfo     sparcv9     vi
>> cmp         echo        kill        pkgparam    stty        w
>> cp          egrep       ksh         ps          tail        wc
>> cpio        expr        ln          pwd         tar         zcat

>> Any ideas?

> This sounds SO much like a school assignment!  And SO much like a shell
> question, not an awk question :)

> SFAIK, awk doesn't support writing to a file it is reading

Then you should keep learning,  grasshopper.

function dump(  i) {
# since i isn't actually passed,  it is created as a variable local
# to the function.  It is traditional to mark the beginning of local
# variables with multiple spaces
for (i=1;i<=ct;i++)
   {
   print X[i] > filename
   delete X[i]
   }
close(filename)

Quote:
}

1==FNR {
if (filename)
   dump()
filename = FILENAME
Quote:
}

/pattern / { edit $0 here with sub or gsub }
{ X[FNR] = $0 }
END {
   dump()
   }

In gawk,  it is unnecessary to delete array items one by one,  you
can delete the whole array.  If your awk is old awk,  all bets are off.
They shouldn't even distribute that {*filter*}(HP doesn't).

--
Dan Mercer

- Show quoted text -

Quote:

> So why can't you use cp and mv?  Is it that you can't make new files?  If
> you are allowed to make new files,  wouldn't "awk {print} oneFile >
> anotherFile; cat anotherFile > oneFile; rm anotherFile", or some such, work?

> If not, surely vi has a way to pipe input to it.  Have awk write a script to
> perform the change using vi.

> If you can't make new files, only open an existing file for rw access, then
> I wonder if this is even solvable.  But the shell folks will know.

>     - Dan

Opinions expressed herein are my own and may not represent those of my employer.


Thu, 16 Dec 2004 01:23:34 GMT  
 in-file search/replace question without using mv or cp

Quote:




> >> I've been poking around the comp.lang.awk archives trying to find
> >> something that will work for me, but no such luck.  Here's the
> >> situation.

> >> I am in a chroot.  I need to perform search and replace on several
> >> property
> >> files with many restrictions on how I can do so (see below).  A
> >> property file would be a simple name/value pair, like:

> >> USER=don

> >> I need to write a script that could replace the value in the property
> >> file.  The result might look like:

> >> USER=west

> >> Again, I'm in a chroot, so I only have specific commands available.  I
> >> cannot use perl, cp, mv, chmod, chown, or a whole bunch of other stuff
> >> because either (a) they aren't in the chroot, or (b) they are not
> >> allowed for security reasons (don't ask).  I can use awk and sed, and
> >> I do, but the powers that be assure me that using mv and cp are not
> >> allowed in this environment.

> >> So what I need is a way to change the contents of the file in-file.  I
> >> can't use awk to generate the result to a temp file and use mv or cp
> >> to replace the original.  Again, not allowed.

> >> Here is what is in the bin directory in the chroot.  Disregard mv and
> >> cp.  I can't use 'em.

> >> awk         csh         fgrep       lp_1251     rm          tee
> >> basename    cut         file        ls          rmdir       touch
> >> bzcat       date        gettext     mkdir       sed         tr
> >> cat         df          grep        mv          sh          uname
> >> chgrp       diff        head        nawk        showrev     uncompress
> >> chmod       dirname     id          netstat     sleep       unzip
> >> chown       domainname  java        pkginfo     sparcv9     vi
> >> cmp         echo        kill        pkgparam    stty        w
> >> cp          egrep       ksh         ps          tail        wc
> >> cpio        expr        ln          pwd         tar         zcat

> >> Any ideas?

> > This sounds SO much like a school assignment!  And SO much like a shell
> > question, not an awk question :)

> > SFAIK, awk doesn't support writing to a file it is reading

> Then you should keep learning,  grasshopper.

> function dump(  i) {
> # since i isn't actually passed,  it is created as a variable local
> # to the function.  It is traditional to mark the beginning of local
> # variables with multiple spaces
> for (i=1;i<=ct;i++)
>    {
>    print X[i] > filename
>    delete X[i]
>    }
> close(filename)
> }

> 1==FNR {
> if (filename)
>    dump()
> filename = FILENAME
> }
> /pattern / { edit $0 here with sub or gsub }
> { X[FNR] = $0 }
> END {
>    dump()
>    }

> In gawk,  it is unnecessary to delete array items one by one,  you
> can delete the whole array.  If your awk is old awk,  all bets are off.
> They shouldn't even distribute that {*filter*}(HP doesn't).

> --
> Dan Mercer

> > So why can't you use cp and mv?  Is it that you can't make new files?
If
> > you are allowed to make new files,  wouldn't "awk {print} oneFile >
> > anotherFile; cat anotherFile > oneFile; rm anotherFile", or some such,
work?

> > If not, surely vi has a way to pipe input to it.  Have awk write a
script to
> > perform the change using vi.

> > If you can't make new files, only open an existing file for rw access,
then
> > I wonder if this is even solvable.  But the shell folks will know.

> >     - Dan

> Opinions expressed herein are my own and may not represent those of my

employer.

Hi Dan -

A couple of things about your post--

Quote:
> > SFAIK, awk doesn't support writing to a file it is reading
> Then you should keep learning,  grasshopper.

I try to avoid condescension like that myself.  But more importantly, you
are not writing to the file to are reading; you are writing to the file you
are _done_ reading.  I couldn't find a randon-access R/W section in the awk
manual.

I realized the post-wrting issue myself, and earlier posted the additional
reply that you may eventually get on your news server--along with the caveat
that this dangerous because it puts the whole file in jeapordy.  Between the
opening of the file in the clause "> filename", and the time the first data
is actually sent to the file, the entire file exists only in transient
storage.

Finally, I tried your code, replaceing
    /pattern / { edit $0 here with sub or gsub }
with
    /pattern / { $0 = $0 }
so it would compile.

The FNR stuff is good, and most correct; I did it much more clumsily,
(becasue I forgot about it, ugh).  But I did test my code--when you test
yours, you may notice that ct is never set., thus there is no output.  (A
change to '{ X[ct=FNR] = $0 }' should fix that.)  Also, in the unlikely
event a file is named "0" (the digit zero) (or any name evaluating to zero)
the 'if (filename)' test could be 'if (filename != "")'

Here is my code, revised based on the FNR you pring to mind.  I still have
dumpFile() to returning a success code (just habit to return useful values),
and I handle the "=" parsing that  the OP said they wanted.  (That leads to
the error condition handling stuff.)  I also still have the search and
replace values coming in on the command line--the seach value as a
stringized regular expression--more versatile, but a pain to really use
well, I guess.

I don't bother deleting elements out of the file[] array (on second thought,
that's not a really good name), because the elements are reused, and I
figure that reducing the memory footprint during a single run is not so
necessary.  But if it were, the delete should be in place.  That's a good
point.

Thanks for the FNR reminder and delete suggestion,
    - Dan

replval2..awk
----------
    function dumpFile(filename, data, lineCnt, local, i) {
        if (!lineCnt) return 0
        for (i = 1; i <= lineCnt; i++)
            print data[i] > filename
        close(filename)
        # delete data
        return 1
    }

    BEGIN {
        OFS = FS = "="
        if (ARGC < 4) {
            print "replval.awk <old> <new> <file>..."
            exit
        }
        old = ARGV[1]; delete ARGV[1]
        new = ARGV[2]; delete ARGV[2]
        # print "Replacing R/E \"" old "\" with string \"" new "\"."
    }

    FNR == 1 {
        dumpFile(lastFilename, file, lineCnt)
        lastFilename = FILENAME
    }

    (NF > 2) { print FILENAME " (" FNR "): \"=\" in data." }
    (NF == 1) { print FILENAME " (" FNR "): No value for key." }
    (NF == 2) { sub(old,new,$2) }
    { file[lineCnt = FNR] = $0 }

    END {
        dumpFile(lastFilename, file, lineCnt)
    }

Yours, in working form, becomes
----------
    function dump(  i) {
        for (i=1;i<=ct;i++)
           print X[i] > filename
        delete X
        close(filename)
    }

    1==FNR {
        if (ct) dump()
        filename = FILENAME
    }

    /pattern / { $0 = $0 }
    { X[ct=FNR] = $0 }

    END { dump() }



Thu, 16 Dec 2004 07:40:25 GMT  
 in-file search/replace question without using mv or cp

Quote:

> I've been poking around the comp.lang.awk archives trying to find
> something that will work for me, but no such luck.  Here's the
> situation.

> I am in a chroot.  I need to perform search and replace on several
> property
> files with many restrictions on how I can do so (see below).  A
> property file would be a simple name/value pair, like:

> USER=don

> I need to write a script that could replace the value in the property
> file.  The result might look like:

> USER=west

> Again, I'm in a chroot, so I only have specific commands available.  I
> cannot use perl, cp, mv, chmod, chown, or a whole bunch of other stuff
> because either (a) they aren't in the chroot, or (b) they are not
> allowed for security reasons (don't ask).  I can use awk and sed, and
> I do, but the powers that be assure me that using mv and cp are not
> allowed in this environment.

> So what I need is a way to change the contents of the file in-file.  I
> can't use awk to generate the result to a temp file and use mv or cp
> to replace the original.  Again, not allowed.

> Here is what is in the bin directory in the chroot.  Disregard mv and
> cp.  I can't use 'em.

> awk         csh         fgrep       lp_1251     rm          tee
> basename    cut         file        ls          rmdir       touch
> bzcat       date        gettext     mkdir       sed         tr
> cat         df          grep        mv          sh          uname
> chgrp       diff        head        nawk        showrev     uncompress
> chmod       dirname     id          netstat     sleep       unzip
> chown       domainname  java        pkginfo     sparcv9     vi
> cmp         echo        kill        pkgparam    stty        w
> cp          egrep       ksh         ps          tail        wc
> cpio        expr        ln          pwd         tar         zcat

> Any ideas?

1.  sed 's/USER=don/USER=west' file > out
    cat out > file

2.  vi file
    :%s/USER=don/USER=west/
    :wq

--

8-CPU Cluster, Hosting, NAS, Linux, LaTeX, python, vim, mutt, tin



Thu, 16 Dec 2004 11:13:27 GMT  
 in-file search/replace question without using mv or cp

Quote:

> So what I need is a way to change the contents of the file in-file.  I
> can't use awk to generate the result to a temp file and use mv or cp to
> replace the original.  Again, not allowed.

You can take advantage of the way that unix handles deleting open files.
ie. you open the file, delete it, and then write back to the file. The
file you write back to will be a separate file to the original file,
although have the same filename.

eg.

(rm file; awk '{...}' > file) < file

This will open the file for reading. The subshell (the commands in the
parens) will all have stdin from the file, which keeps the file open.
You can then remove it and use awk to write back to a file of the same
name, although technically it will be a different file (different inode).

You need to make sure that you unlink(2) the file. If you were to just
redirect out to the file, the shell would most likely open the file with
O_TRUNC|O_CREAT, which will cause it to wipe out the contents of your
file.



Thu, 16 Dec 2004 16:57:13 GMT  
 
 [ 11 post ] 

 Relevant Pages 

1. How to replace or create a file using the open/create/replace.vi

2. Optimization help needed: Search and Replace using dictionary of parameters

3. How do I replace a file using Write Characters to file.vi

4. 2-file awk search-and-replace

5. Search and replace text in a file based on a specific line

6. Search and replace on a large text file

7. String Slicing Question (Search and Replace)

8. searching and replacing a string within a file with rexx

9. search + replace (ignorant newbie question)

10. search/replace in long files

11. Write to 2 file from pipe without using temp file

12. help me to execute my file without using wish (menu file, command source)

 

 
Powered by phpBB® Forum Software