Using sed in for loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Using sed in for loop
# 1  
Old 03-30-2010
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 not know how to use sed in a loop and have a script that does the editing from line 1 to line 100.

The following code works, but I need it in a loop:

sed -e '/mat1.txt/s//mat1/g' -e '/mat2.txt/s//mat2/g' ............... -e '/mat100.txt/s//mat100/g' MAT.txt > MAT1.txt

Can somebody help me out?
# 2  
Old 03-30-2010
You don't need any loop.
Code:
sed 's/\.txt$//' MAT.txt > MAT1.txt

# 3  
Old 03-30-2010
Thanks jlliare. I ran the code you provided but the .txt extension still remains.
# 4  
Old 03-30-2010
Check whether MAT.txt has any space or non-printable char at the end of each line
Code:
cat -vet MAT.txt

# 5  
Old 03-30-2010
Sorry, i should be more specific with describing MAT.txt.
It has 3 columns:
mat1.txt 548726 A
mat1.txt 125484 B
mat1.txt 568543 A
mat1.txt 885647 B
.
.
.
.
.
mat100.txt 898468 A

The result should look like:
mat1 548726 A
mat1 125484 B
mat1 568543 A
mat1 885647 B
.
.
.
.
.
mat100 898468 A
# 6  
Old 03-30-2010
Remove $ from jlliagre's code to remove .txt anywhere in the line instead of end of the file
Code:
sed 's/\.txt//' MAT.txt > MAT1.txt

# 7  
Old 03-30-2010
Yes, it worked this time. Thanks a million anbu23!
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. 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