for this purpose I am using the command :searches the end of the line i.e "$" and then replaces with "D".
%s/$/D/g
The problem is before the search begins, first I need to implement a function that picks up the file from the specified location and performs search and replace and pushes back thhe file to the original location.
This overall function I need to implement in a ksh script.
in this case the -i flag of perl actually overwrites the same file, there is no involment of creating a temp file and moving it back to the same name again
Mona[COLOR=Blue] , I have couple of questions for you . When I append "|D" at the end of the line, does it replaces the "$" which is the end of the line or just appends without affecting the "$" the end of the line indicator.
for ex:
incoming file:
a|S|D|F|G
output
a|S|D|F|G|D$
Does it works this way? I dont knw whether its a relevant question ro not. Please Please dont mind if its not!!!!!!!!!!
But do tell me how it works.
secondly, the location of the files is fixed, then how do I incorporate(define) the location of the file in the script?
If you see the regular expression in the sed you can understand better.
s/^\(.*\)$/&\\D/ - Takes the entire line and append \D in the last.
If the location of the file is fixed then write a script to get the file name as a command line argument. Create a variable which contains the path(which u can hardcode) and the file name passed.
see an example below
#!/bin/ksh
file="/export/home/test/mons/"$1
sed 's/^\(.*\)$/&\\D/' $file > $file_temp
mv "$file_temp" "$file"
The exact script what I tested is
#!/bin/ksh
$file="/A/B/C/D/E/"mat.dtd
sed 's/^\(.*\)$/&\|D/' mat.dtd > $file_temp
mv "$file_temp" "xdm.dtd"
and the output I am getting is(as on the screen)
./test1.ksh[2]: =/A/B/C/D/E/mat.dtd: not found
a|b|s|C|r|q|r|D
b|s|r|e|o|s|k|D
p|i|e|w|m|e|t|D
1|2|3|4|5|6|g|D
Z|Q|R|T|S|L|j|D
1|d|x|a|p|y|m|D
mv: : cannot access: No such file or directory
When I am using ur first solution ,its works fine, but for that I need to work in the same shell.
For the above code,it is not able to access the source file(mat.dtd) from the location mentioned.It is taking the contents of the file only becos I am running code in the same dir and also not able to move back to the original file.