Visit Our UNIX and Linux User Community


If else statement in sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting If else statement in sed
# 1  
Old 01-19-2014
If else statement in sed

Hello Guys,
I am new here and this is my first post, hope someone can help me

I am writing a script that is supposed to go in 9 different directories and edit a given file in each of the directories. I am using sed to edit the file as
Code:
sed -i 'line# s/#to be changed/#to be replaced with/ filename

but to get to the file in each directory I am using an if statement as

Code:
for i in {dir1,dir2,...,dir9}
do 
cd $i
if [ "$i" == "dir1" ] ; then
sed -i 'line# s/0/1/ filename
else if [ "$i" == "dir2" ] ; then
sed -i 'line# s/0/2/ filename
else if ...

upto dir9 
fi
cd ..
done

but I always have the error which says unexpected error `done'

can anyone help mw where I am going wrong

thanks

Moderator's Comments:
Mod Comment Use code tags please - check your PM for a guide.

Last edited by zaxxon; 01-19-2014 at 04:51 AM.. Reason: code tags
# 2  
Old 01-19-2014
Use elif instead of else if.
# 3  
Old 01-19-2014
And with every sed statement the closing quote is missing. Perhaps you could use a variable so that you only need one sed statement and consider using a case statement.
# 4  
Old 01-19-2014
Thank you very much
# 5  
Old 01-21-2014
Scrutinizer You right or the closing quote, but missed it when I was writing the post. The statement works now fine with if elif statement.
What do yu mean by using only one sed statement?

thanks
# 6  
Old 01-21-2014
If the line numbers, filenames, and string to be replaced are all the same, the directories are literally named "dir<digit>", and the replacement string is the same <digit> as found in the directory name, try:
Code:
for i in {1..9}
do      sed -i "line# s/0/$i/" "dir$i/filename"
done

otherwise, try something like:
Code:
for i in dir1 dir2 ... dir9
do      cd "$i"
        case "$i" in
        (dir1)   sed -i "dir1line# s/dir1search/dir1repl/" filename1;;
        (dir2)   sed -i "dir2line# s/dir2search/dir2repl/" filename2;;
        ...
        (dir9)   sed -i "dir9line# s/dir9search/dir9repl/" filename9;;
        esac
        cd ..
done

This User Gave Thanks to Don Cragun For This Post:

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed within awk statement

input | Jan 8 2018 11:28PM| 24 | 75 | 51 | 1 | 1.600| | Jan 8 2018 12:01PM| 52 | 823 | 21 | 6 | 2.675| desired output Jan-8-2018-11:28PM 24 75 51 1 1.600 Jan-8-2018-12:01PM 52 823 21 6 2.675 Dear friends, I have input file , as shown above and... (10 Replies)
Discussion started by: sagar_1986
10 Replies

2. Shell Programming and Scripting

Convert Update statement into Insert statement in UNIX using awk, sed....

Hi folks, I have a scenario to convert the update statements into insert statements using shell script (awk, sed...) or in database using regex. I have a bunch of update statements with all columns in a file which I need to convert into insert statements. UPDATE TABLE_A SET COL1=1 WHERE... (0 Replies)
Discussion started by: dev123
0 Replies

3. Shell Programming and Scripting

sed if statement to see if file exists

Is there an easy way of checking for the existence of a file that ends with the extension .order and if it exists do something? if not do nothing (7 Replies)
Discussion started by: firefox2k2
7 Replies

4. Shell Programming and Scripting

If condition and for loop within sed statement

Hi, I tried to go through a lot of online material but could not find concrete solution. My issues is like this : I've got a input file like this : <a> <startDate>19700101000000</startDate> <endDate>20300101000000</endDate> </a> ... (12 Replies)
Discussion started by: Shaishav Shah
12 Replies

5. Shell Programming and Scripting

A complex sed statement

I have following requirement. Say, my text file contains following patterns {2010501005|XXGpvertex|9|0|17|0|{|{30100001|XXparameter_set|@@@@{{30001002|XXparameter|!prototype_path|$AB_COMPONENTS/Sort/Sort.mpc|3|2|Pf$|@{0|}} }}@0|@315000|78500|335000|99000|114000|87000|17|And the Sort|Ab... (8 Replies)
Discussion started by: Shell_Learner
8 Replies

6. Shell Programming and Scripting

sed / grep / for statement performance - please help

I'm searching the most effective way of doing the following task, so if someone can either provide a working solution with sed or one totally different but more effective then what I've got so far then please go ahead! The debugme directory has 3 subdirectorys and each of them has one .txt file... (7 Replies)
Discussion started by: TehOne
7 Replies

7. UNIX for Dummies Questions & Answers

Case statement/sed command

The file dbnames.txt has 5 columns, what i'm trying to do is that when the fifth column equals A, store in the variable "access" the word, "admin access". If it equals B, then "business access" etc. I think their is a problem with my sed command, because it is not substibstituting the words... (1 Reply)
Discussion started by: ross_one
1 Replies

8. Shell Programming and Scripting

sed remove statement

I am having some problems with sed, that I am hoping that I can get some assistance with. I am trying to remove two subsets of a string, and cannot figure out how to have it work. Here is an example string: auth_ldap authenticate: user joe authentication failed; URI /svn/ I want to... (4 Replies)
Discussion started by: Guyverix
4 Replies

9. Shell Programming and Scripting

Variables within a sed statement

I am just wondering if it's possible to refer to variables within a sed statement as follows:- cat $file | sed -e 1's/$oldtext/$newtext/' > $file as when I run the script, the variables are not recognised and nothing happens..?? Thanks (5 Replies)
Discussion started by: sirtrancealot
5 Replies

10. Shell Programming and Scripting

if and sed statement

this is my output for my crawler. /about.html /ads/ /advanced_search?hl=en froogle.google.com/frghp?hl=en&tab=wf&ie=UTF-8 groups.google.com/grphp?hl=en&tab=wg&ie=UTF-8 /imghp?hl=en&tab=wi&ie=UTF-8 /intl/en/options/ /language_tools?hl=en /maphp?hl=en&tab=wl&ie=UTF-8... (3 Replies)
Discussion started by: chris1234
3 Replies

Featured Tech Videos