home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


UNIX Power Tools

UNIX Power ToolsSearch this book
Previous: 33.5 Running Editing Scripts Within vi Chapter 33
Batch Editing
Next: 33.7 ed/ex Batch Edits: Avoid Errors When No Match
 

33.6 Change Many Files by Editing Just One

Warning! The diff command can make an editing script ( 28.9 ) that you give to the ex or ed editors or the patch ( 33.9 ) program. They'll apply your same edits to other copies of the same file. This is handy if you have a lot of copies of a big file, spread around a network or on a lot of disks, and you want to make the same small change to all the files. Instead of sending new copies of the whole file, just have diff make a script - and use that little script to update all the big files.

Here's a demo. I'm going to modify a program called pqs.c . Then I'll use diff and ed to apply the same changes to a copy of the file named remote-pqs.c (which might be at a remote computer):






















>>
 





1% 

cp pqs.c remote-pqs.c


2% 

cp pqs.c pqs.c.new



3% 

vi pqs.c.new


4% 

diff pqs.c pqs.c.new


106,107c106
<       fprintf(stderr,
<           "%s: quitting: not able to %s your .pq_profile file.\n",
--
>       fprintf(stderr, "%s: quitting: can't %s your .pq_profile file.\n",
390a390
>               "WARNING:",
5% 

diff -e pqs.c pqs.c.new > edscr


6% 

cat edscr


390a
                "WARNING:",
.
106,107c
        fprintf(stderr, "%s: quitting: can't %s your .pq_profile file.\n",
.
7% 

echo w >> edscr


8% 

ed remote-pqs.c < edscr


19176
19184
9% 

diff pqs.c.new remote-pqs.c


10%

At prompt 1% , I make the simulated "remote" copy of the pqs.c file. At prompt 2% , I make another copy of it; at prompt 3% , I edit the copy. Prompt 4% has a diff that shows the changes I made. Then, at prompt 5% , I run diff -e ( 28.1 ) ; I save the result in edscr , which I show at prompt 6.

Prompt 7% is important because diff -e doesn't add a w command to the script file. That tells ed to write its changes to the file. I use echo w ( 8.6 ) to add the command.

In prompt 8% , I give ed the name of the "remote" file to edit as a command-line argument and give it the script file on its standard input. At prompt 9% , I do a diff that shows the changes have been made and the two versions are the same.

- JP


Previous: 33.5 Running Editing Scripts Within vi UNIX Power Tools Next: 33.7 ed/ex Batch Edits: Avoid Errors When No Match
33.5 Running Editing Scripts Within vi Book Index 33.7 ed/ex Batch Edits: Avoid Errors When No Match

The UNIX CD Bookshelf Navigation The UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System