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 03: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
Test Your Knowledge in Computers #396
Difficulty: Medium
HP-UX was the first Unix to offer access control lists for file access permissions as an alternative to the standard Unix permissions system.
True or False?

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