Visit The New, Modern Unix Linux Community


sed across multiple files


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers sed across multiple files
# 1  
sed across multiple files

I've got a bunch of files (40 or so) and in each there is a substitution I need to perform.

I execuet the following sed command but it just make the changes to the screen without affecting the original file.

sed "s/, LA/,LA/g" *

(All files in the directory need this update).

So I tried redirecting...

for x in *
do
sed "s/, LA/,LA/g" $x > new_$x
done

And that worked. But I'm not sure about renaming the files back to what they were. mv obviously doesnt' like the wildcards and I'm not sure how to convert back.

I'd also like to know if there is a way to do this without piping to a new file...
# 2  
my try

there is probably a much better way to do this. Please forgive me I have never done any shell programming before (i want to learn) and I just wanted to rack my brain trying to figure out an answer to your problem. here is what I got to work for me. it does however pipe to a new file. sorry i couldn't help you there.



for x in *
do
sed "s/, LA/,LA/g" $x > temp
cat temp > $x
rm temp
done


just make sure you don't already have a file named temp. if yo do then just change the name temp to a file you don't already have.

----------------------
tD

Last edited by theDirtiest; 01-18-2002 at 09:56 AM..
# 3  
tweak script

I have a minor change to your script. Which will do the job.

Make a file with the listing of the files you want to change. This might be necessary if the directory your 40 files are in has other files that you don't want to change in it.

Make a file with only the filenames of your 40 files in it. Then do the script this way. (with backtics)


for x in `cat filename`
do
sed "s/, LA/,LA/g" $x > temp
cat temp > $x
rm temp
done


By default the 'sed' command will output all lines, even the ones it doesn't modify. If you did only want the lines that you modified to be output use this option 'sed -n ....'. This will suppress all lines that weren't modified.

Now that I think about it, you really don't need the 'rm temp' because your line, "sed "s/, LA/,LA/g" $x > temp", has only the '>' which will overwrite the temp file each time you come thru the 'for loop'.

So this will work as well.

for x in `cat filename`
do
sed "s/, LA/,LA/g" $x > temp
cat temp > $x

done




Smilie
This User Gave Thanks to Kelam_Magnus For This Post:
# 4  
true you don't need the rm temp, but I just added it so it wasn't left over when the script was finished.
# 5  
Excellent..... in this instance all the files in the directory are to be modified...and i want all lines including those not modified,.. so a simple redirection to temp and back to $x will work just fine.

rm temp... harmless either way....so that's cool. Thanks guys..

Smilie
 

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #921
Difficulty: Medium
Unix Epoch Time cannot be extended backwards from the epoch date.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Using sed to edit multiple files

Created a shell script to invoke sed to edit multiple files, but am missing something. Here's the shell script: oracle:$ cat edit_scripts.sh #!/bin/sh #------------------------------------------------------------------------------ # edit_scripts.sh # # This script executes sed to make global... (4 Replies)
Discussion started by: edstevens
4 Replies

2. Shell Programming and Scripting

sed parser behaving strange on replacing multiple words in multiple files

I have 4000 files like $cat clus_grp_seq10_g.phy 18 1002 anig_OJJ65951_1 ATGGTTTCGCAGCGTGATAGAGAATTGTTTAGGGATGATATTCGCTCGCGAGGAACGAAGCTCAATGCTGCCGAGCGCGAGAGTCTGCTAAGGCCATATCTGCCAGATCCGTCTGACCTTCCACGCAGGCCACTTCAGCGGCGCAAGAAGGTTCCTCG aver_OOF92921_1 ... (1 Reply)
Discussion started by: sammy777888
1 Replies

3. Homework & Coursework Questions

Shell Script to sed with Multiple Files

I am not sure what I am doing wrong here. The code should work fine. I have been making small changes insuring that each new bit works. Now running my sed through multiple files I am getting incorrect output. Any help and instruction would be greatly appreciated. The problem - Generalize... (10 Replies)
Discussion started by: Lycopene
10 Replies

4. Homework & Coursework Questions

Help with Shell Scripts Using sed in multiple files.

Hi, I was hoping that someone could help me. I have a problem that i am trying to work on and it requires me to change text within multiple files using sed. What i have so far is !/bin/sh File1="$3" File2="$4" File3="$5" testNum="$File1" while test "$testNum" <= "$File3"; do echo... (12 Replies)
Discussion started by: Johnny2518
12 Replies

5. Shell Programming and Scripting

Help with Shell Scripts Using sed in multiple files.

Hi, I was hoping that someone could help me. I have a problem that i am trying to work on and it requires me to change text within multiple files using sed. I use the program to change an occurance of a word throughout different files that are being tested. At first i had to Create a new script,... (1 Reply)
Discussion started by: Johnny2518
1 Replies

6. Shell Programming and Scripting

SED command using multiple input files

What is the syntax to use multiple input files in a SED command. i.e. substitute a word with a phrase in every file in a directory. for every file in /usr/include that has the word "date" in the file grep -l '\<date\>' /usr/include/*.h find each occurrence of the word "time" in the file &... (3 Replies)
Discussion started by: sheoguey
3 Replies

7. UNIX for Dummies Questions & Answers

best method of replacing multiple strings in multiple files - sed or awk? most simple preferred :)

Hi guys, say I have a few files in a directory (58 text files or somthing) each one contains mulitple strings that I wish to replace with other strings so in these 58 files I'm looking for say the following strings: JAM (replace with BUTTER) BREAD (replace with CRACKER) SCOOP (replace... (19 Replies)
Discussion started by: rich@ardz
19 Replies

8. UNIX for Dummies Questions & Answers

SED on multiple files

Hello all, Search & replace works fine using sed on a single file. Ex: sed -i 's/day/night/g' test1.sh There are many *.sh files in my current directory that I would like use sed on. I tried running the sed command using wild card but it did not work. sed -i 's/day/night/g' *.sh ... (7 Replies)
Discussion started by: luft
7 Replies

9. UNIX for Dummies Questions & Answers

sed on multiple files?

Hi, I want to do a search and replace on multiple text files. Can I use sed to do this? i.e. I want to do something like: $ sed *.html -e 's/<\/body>/<\!-- blah -->\n<\/body>/' | grep -1 body ... then pipe/ channel the results back into the same files that were searched. how would... (2 Replies)
Discussion started by: mgrahamnz
2 Replies

10. Shell Programming and Scripting

how to use multiple files in sed with w command

i have a command like : sed -n 's/^* /&/w even' <file if i want to write to multiple files like sed -n 's/^* /&/w zero two three' < file its not working it is taking "zero two three" as a single file i want to write to 3 seperate files . pls can anyone help me (2 Replies)
Discussion started by: santosh1234
2 Replies

Featured Tech Videos