Using sed in a for loop


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Using sed in a for loop
# 1  
Old 01-04-2013
Using sed in a for loop

Hello
I have a group of files
Code:
a1.profile a2.profile a3.profile a4.profile b1.profile b2.profile b3.profile b4.profile

These files all have the same first line with a value s1 atop the columns
Code:
s1_context s1_ref s1_sample s1_% etc

I am trying to use sed in a for loop to replace the s1 in the header of each each file with the initial part of the filename with something like
Code:
for FILE in a1 a2 a3 a4 b1 b2 b3 b4
do
    sed -i.bak "1s/s1/$FILE/g" $FILE.profile > $FILE.profile.header
done

But I am not getting the desired output. I just get $FILE in the header instead.
Thanks
# 2  
Old 01-04-2013
In bash, using -vx options to log what it's doing, we see exactly the output expected:
Code:
for FILE in a1 a2 a3 a4 b1 b2 b3 b4; do sed "1s/s1/$FILE/g" file; done
+ for FILE in a1 a2 a3 a4 b1 b2 b3 b4
+ sed 1s/s1/a1/g file
a1_context a1_ref a1_sample a1_% etc
+ for FILE in a1 a2 a3 a4 b1 b2 b3 b4
+ sed 1s/s1/a2/g file
a2_context a2_ref a2_sample a2_% etc

so...?
# 3  
Old 01-04-2013
You are using the -i option, which means inplace-update. Therefore the redirection of standard output is obsolete and nothing should be written to the *.header files.

After the loop, the *.profile files hold the contents with the new headers and the *.bak the original contents.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Using sed in a for loop

Hi, I have a file called 1.txt, I want to create 2.txt through 100.txt using a for loop. In each instance of the loop, I want to change all "1"'s in the text file to "2"s and so on... I tried the code below to do this: for i in {2..100}; do sed 's/1/$i/g' 1.txt > $i.txt; done but it... (1 Reply)
Discussion started by: evelibertine
1 Replies

2. Shell Programming and Scripting

Using variables in a sed loop...

Hi all, I'm trying to search for the first field in a file called vintella.sudoers_1 and then use the result to grep for its match in vintella.sudoers_useralias file but assigning the second field of what it finds to another variable called to_replace. I then want to use that to_replace... (9 Replies)
Discussion started by: Jazmania
9 Replies

3. Shell Programming and Scripting

Need help using sed inside the loop.

Hi, i have written a script. it collects data based on the sql queries executed by it. i have multiple output files. after the output file is made i need to do some cosmetic changes in the files and then store them. i am unable to use sed conditions inside the loop. see below code for... (3 Replies)
Discussion started by: dazdseg
3 Replies

4. Shell Programming and Scripting

Using sed in for loop

I have a file MAT.txt which contains the following data: mat1.txt mat2.txt . . . . mat100.txt I want to remove the '.txt' from every line and have an output file with the following data: mat1 mat2 . . . . mat100 I know this can be done with sed easily for each line, but I do... (8 Replies)
Discussion started by: ursaan
8 Replies

5. UNIX for Dummies Questions & Answers

SED inside while loop

Hi, im having problem creating a loop using my code: aside from the fact that the 1st variable (VAR) does not increment, it loops more than the expected output. for sample purposes, test csv contains 3 lines. #get number of lines in the file lines=$( wc -l < test.csv ) ... (5 Replies)
Discussion started by: paoie
5 Replies

6. Shell Programming and Scripting

For loop with sed

Hi there, I have 1 file with different 144 lines and 144 files that I want to change with a sed. What I want to do is to go trough the file with the 144 different lines take the line a replace a certain pattern with said in the first file of the folder where the 144 files are. Take the second... (3 Replies)
Discussion started by: sickboy
3 Replies

7. Shell Programming and Scripting

Loop with sed command to replace line with sed command in it

Okay, title is kind of confusion, but basically, I have a lot of scripts on a server that I need to replace a ps command, however, the new ps command I'm trying to replace the current one with pipes to sed at one point. So now I am attempting to create another script that replaces that line. ... (1 Reply)
Discussion started by: cbo0485
1 Replies

8. Shell Programming and Scripting

Using sed with a foreach loop

So I am back again beating my head against the wall with a shell script and getting a headache! I want to change each year in a file (1980, 1981, 1982, 1983, etc.) to the same year followed by a tab. The input is "blah blah (1980) blah blah". I want to get "blah blah (1980 ) blah blah".... (2 Replies)
Discussion started by: Peggy White
2 Replies

9. UNIX for Dummies Questions & Answers

sed in a for loop

dear guys, I want to replace the beginning of some lines in a file by (,) The sequence number of lines is located in a file named numbers so, i used this simple script to do so, but it didn't work. it does'nt recognize the $j in the command sed #! /bin/sh for j in `cat numbers` do sed '$j... (6 Replies)
Discussion started by: marwan
6 Replies

10. Shell Programming and Scripting

Problem with for loop/sed ?

I have a hostnames file which has: $ cat hostnames.txt serverxx1 serverxx2 serverxx3 My script: #!/bin/sh fileA=build.xml for i in ./hostnames.txt ; do sed 's/createConfig machine="Machine"/createConfig machine=" '$i' "/g' "$fileA" > ./tmpfile done FileA has: createConfig... (2 Replies)
Discussion started by: chiru_h
2 Replies
Login or Register to Ask a Question