Matching single quote in a regular expression


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Matching single quote in a regular expression
# 8  
Old 05-22-2011
Code:
# Lets print the file contents 

C:\Users\Ninz\Desktop>type a.txt
This is a fake file

$ENV{'ORACLE_HOME'} = "/home/oracle/product/10.1.0/db_1" ;

this is the last line

# using windows , using different separator "|" instead of "/" so that you dont have to escape every "/" in path 

# Adding "-i.bak" because in windows it throws error if you try to modify file without taking backup 

C:\Users\Ninz\Desktop>perl -pi.bak -e "s|\$ENV{'ORACLE_HOME'} \= \"/home/oracle/
product/10.1.0/db_1\"| \$ENV{'ORACLE_HOME'} \= \"/opt/app/any/other/path\"|" a.txt

C:\Users\Ninz\Desktop>type a.txt
This is a fake file

 $ENV{'ORACLE_HOME'} = "/opt/app/any/other/path" ;

this is the last line
C:\Users\Ninz\Desktop>

# 9  
Old 05-22-2011
The 200 perl scripts are on a Unix/Linux server, so I can't use a '|' and I have to escape '/' in the path. But that is not the problem. I can escape '/' in the path and and escape the '$' and escape the '{' and it will match and replace the text. The problem is the single quote before and after ORACLE_HOME. Does anyone know how to match and replace a single quote in a line of text in a file?
# 10  
Old 05-23-2011
@JC9672 : Why cant you use different separator ?? Its valid and its not Platform specific.

I have copied below example on RH4 box and tried again, it worked without any modification ( If something works on windows then it should work on *nix without any problem Smilie )


1. Checking file contents, there are quotes before ORACLE_HOME

Code:
$ > cat a.pl
This is a fake file
$ENV{'ORACLE_HOME'} = "/home/oracle/product/10.1.0/db_1" ;
this is the last line
$ >

2. Running replace command

Code:
$ > perl -pi -e "s|\$ENV{'ORACLE_HOME'} \= \"/home/oracle/product/10.1.0/db_1\"| \$ENV{'ORACLE_HOME'} \= \"/opt/app/any/other/path\"|" a.pl

3. Checking the contents of file.

$ > cat a.pl
This is a fake file
$ENV{'ORACLE_HOME'} = "/opt/app/any/other/path" ;
this is the last line
$ >

4. Both the entries one below other
Code:
$ENV{'ORACLE_HOME'} = "/home/oracle/product/10.1.0/db_1" ;
$ENV{'ORACLE_HOME'} = "/opt/app/any/other/path" ;

# 11  
Old 05-23-2011
I copied and pasted your command and it did not work. I even copied your script and it did not work. I did not get any error message, but no replacement either. I am using a Red Hat box verison 8 or 9. I not sure which. Also my Perl version is 5.12.3. Maybe that is why it did not work.
# 12  
Old 05-23-2011
dont copy paste, sometimes it gets converted to other characters

try on simple thing , create 1 file with $ENV{"ABCD"} try to change this value do it on windows then on unix

paste what you have done, you have to try different things because its a regular expression and all versions of perl + red hat will support that ..

best of luck Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replacing all but the first and last double quote in a line with a single quote with awk

From: 1,2,3,4,5,This is a test 6,7,8,9,0,"This, is a test" 1,9,2,8,3,"This is a ""test""" 4,7,3,1,8,"""" To: 1,2,3,4,5,This is a test 6,7,8,9,0,"This; is a test" 1,9,2,8,3,"This is a ''test''" 4,7,3,1,8,"''"Is there an easy syntax I'm overlooking? There will always be an odd number... (5 Replies)
Discussion started by: Michael Stora
5 Replies

2. Shell Programming and Scripting

regular expression matching whole words

Hi Consider the file this is a good line when running grep '\b(good|great|excellent)\b' file5 I expect it to match the line but it doesn't... what am i doing wrong?? (ultimately this regex will be in a awk script- just using grep to test it) Thanks, Storms (5 Replies)
Discussion started by: Storms
5 Replies

3. UNIX for Dummies Questions & Answers

delete lines matching a regular expression

I have a very large file (over 700 million lines) that has some lines that I need to delete. An example of 5 lines of the file: HS4_80:8:2303:19153:193032 153 k80:138891 HS4_80:8:2105:5544:43174 89 k88:81949 165 k88:81949 323 0 * = 323 0 ... (6 Replies)
Discussion started by: pathunkathunk
6 Replies

4. Programming

Perl: How to read from a file, do regular expression and then replace the found regular expression

Hi all, How am I read a file, find the match regular expression and overwrite to the same files. open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat"; open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat"; while (<DESTINATION_FILE>) { # print... (1 Reply)
Discussion started by: jessy83
1 Replies

5. Shell Programming and Scripting

Regular expression matching

Hi, I have a variable in my script that gets its value from a procstack output. It could be a number of any length, or it could just be a '1' with 0 or more white spaces around it. I would like to detect when this variable is just a 1 and not a 1234, for example. This is as far as I got: ... (3 Replies)
Discussion started by: tmf33uk
3 Replies

6. Shell Programming and Scripting

Regex in grep to match all lines ending with a double quote (") OR a single quote (')

Hi, I've been trying to write a regex to use in egrep (in a shell script) that'll fetch the names of all the files that match a particular pattern. I expect to match the following line in a file: Name = "abc" The regex I'm using to match the same is: egrep -l '(^) *= *" ** *"$' /PATH_TO_SEARCH... (6 Replies)
Discussion started by: NanJ
6 Replies

7. Shell Programming and Scripting

Regular expression matching in BASH (equivalent of =~ in Perl)

In Perl I can write a condition that evaluates a match expression like this: if ($foo =~ /^bar/) { do blah blah blah } How do I write this in shell? What I need to know is what operator do I use? The '=~' doesn't seem to fit. I've tried different operators, I browsed the man page for... (3 Replies)
Discussion started by: indiana_tas
3 Replies

8. Shell Programming and Scripting

Help: Regular Expression for Negate Matching String

Hi guys, as per subject I am having problem with regular expressions. Example, if i got a string "javax.servlet.http.HttpServlet.service" that may occurred anywhere within a text file. How can I used the negate pattern matching of regular expression? I tried the below pattern but it... (4 Replies)
Discussion started by: DrivesMeCrazy
4 Replies

9. Programming

Regular Expression matching in PERL

I am trying to read a file and capture particular lines into different strings: LENGTH: Some Content here TEXT: Some Content Here COMMENT: Some Content Here I want to be able to get (LENGTH: .... ) into one array and so on... I'm trying to use PERL in slurp mode but for some reason... (8 Replies)
Discussion started by: Legend986
8 Replies

10. Shell Programming and Scripting

Regular expression matching a new line

I have written a script to test some isdn links in my network and I am trying to format the output to be more readable. Each line of the output has a different number of digits as follows... Sitename , spid1 12345678901234 1234567890 1234567 , spid2 1234567890 1234567890 1234567 Sitename , ... (1 Reply)
Discussion started by: drheams
1 Replies
Login or Register to Ask a Question