sed in a for loop


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers sed in a for loop
# 1  
Old 06-30-2007
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 s/^/,/' file
done

so what's wrong?!
thanks
# 2  
Old 06-30-2007
should be something like,

Code:
sed ''$var's/^/,/' filename

# 3  
Old 06-30-2007
with awk it would be like,

Code:
lineno=1
awk -v var=$line 'NR == var { $0 = ","$0; print; exit }' filename


Last edited by matrixmadhan; 06-30-2007 at 02:00 PM.. Reason: req forgot !
# 4  
Old 06-30-2007
thanks Matrixmadhan, i tried your first suggession, and it works, but the output is not what i want.
for example: if the for loop run 4 times, then output will display the file 4 times on the screen, every time with only one modification on a certain line.
what i want is that the output is displayed only 1 time with the 4 modifications done on it.
I hope i made my point clear.
also, I want to know the difference between $j and $var.
Thanks alot again
# 5  
Old 06-30-2007
to have one final copy...

you need to replace as and when sed performs the transformation..

it would be something like..

Code:
sed <code> filename > filename.temp
mv filename.temp filename

and at the end
file with name as <filename> will have all the modifications

There is no difference in using $var and $j. They are variables ( variable names ) you can use them as you wish to.
# 6  
Old 06-30-2007
it works
thanks for your usfull hints.
marwan
# 7  
Old 06-30-2007
Hi.

Here is a method to efficiently run sed on the data file only once. It uses sed to create a sed script file that can then be used in a single pass over the data file.

For small files, this will not make much difference, but with large data files, you will save all but one (or two) executions of sed, where n is the number of lines you are changing:
Code:
#!/bin/sh

# @(#) s1       Demonstrate creation of sed script for single-pass.

set -o nounset
echo " sh version: $BASH_VERSION" >&2

# Create the line number test file, can be in any order.

cat >numbers <<EOF
4
7
3
EOF

# Create the test data file.

cat >data1 <<EOF
one
two
three
four
five
six
seven
eight
nine
ten
EOF

# Create the sed script file with sed, for example:
# make
# 44
# into
# 44s/^/,/

sed 's|$|s/^/,/|' numbers >script

# Now efficiently run sed once instead of n times, display the
# data.

sed -f script data1

exit 0

which produces:
Code:
% ./s1
 sh version: 2.05b.0(1)-release
one
two
,three
,four
five
six
,seven
eight
nine
ten

cheers, drl
 
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. UNIX for Dummies Questions & Answers

Using sed in a for loop

Hello I have a group of files 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 s1_context s1_ref s1_sample s1_% etc I am trying to use sed in a for loop to replace the s1 in the... (2 Replies)
Discussion started by: plumb_r
2 Replies

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

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