Overwriting Original file with new output ?

I am running  sed -f test.sed $file > $file.out              as a result I am getting .out files

( which is the expected output ) but i have to mannually rename them to the original filename
then remove all*.out

is there a way I can overwrite the original one ?  Thanks much

Shawkat

My whole script look like following :


#!/bin/ksh
for file in `echo *`
 do
  sed -f test.sed $file > $file.out
 done
#
dmshawkatAsked:
Who is Participating?
 
yuzhConnect With a Mentor Commented:
you can change:
    sed -f test.sed $file > $file.out
to:

    sed -f test.sed $file > $file.out
    mv $file.out $file
0
 
TintinConnect With a Mentor Commented:
Always good to check the sed was successful *before* overwriting the original file.  I'd use

#!/bin/ksh
for file in *
do
  sed -f test.sed $file >file.out && mv file.out $file
done

Note that `echo *` is redundant as the shell does globbing for you.
0
 
NopiusCommented:
It's possible with 'ed' command. man ed

Usage:
cat test.ed | ed - $file

ed commands are different from sed, so you need to modify script.

Very simple 'ed' script, that will add '1234' to the end of each line is:
--[cut]--
1,$s/$/1234/
w
q
--[cut]--
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.