Need help replacing quotes


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Need help replacing quotes
# 8  
Old 02-02-2011
Quote:
Originally Posted by jl487
Sure. I am actually writing the code in python and importing unix libraries/syntax.
Code:
while get_expression():
    t = get_next_token()
    LI1 = [] #creates an array of tokens
    LI = [3, '*', '(', 9, '+', 4, ')', '*', 5, ''] #hardcoded for testing purposes.
    while t:
        LI1.append(t) 
        t = get_next_token()
    
    LI1.append('')
    os.system("awk -F, -v c=\' '{for(i=0;++i<=NF;){if($i ~ /[0-9]/){gsub(c,x,$i)}}}1' OFS=, $LI1")
    print "Actual Parse:"
    print LI1

The os.system normally allows for me to use unix commands in python.
Actually, I don't know much about python but in the awk code, after OFS, it's comma as the output field separator. So, try as above by changing which is in red.
# 9  
Old 02-02-2011
hmm... still no luck. I'm still getting a syntax error, which may be due to me importing the unix commands into python.
# 10  
Old 02-02-2011
Quote:
Originally Posted by jl487
hmm... still no luck. I'm still getting a syntax error, which may be due to me importing the unix commands into python.
By the way, You created an array of tokens with array name LI1.
And, You initialize the value on LI.
And, in awk, You passed LI1 as input.
Code:
LI1 = [] #creates an array of tokens
LI = [3, '*', '(', 9, '+', 4, ')', '*', 5, ''] #hardcoded for testing purposes.
awk -F, -v c=\' '{for(i=0;++i<=NF;){if($i ~ /[0-9]/){gsub(c,x,$i)}}}1' OFS=, $LI1

Smilie???
# 11  
Old 02-02-2011
sorry for the confusion, but LI1 is the correct array. LI was created because that was my target output (note that there are no ' characters between the integers). I created LI just to test my code. LI1 is the array that needs to have the ' characters removed. The while loop in my code appends tokens to the array, but also surrounds my tokens with single quotes.
# 12  
Old 02-02-2011
Quote:
Originally Posted by malcomex999
Try...
Code:
awk -F, -v c=\' '{for(i=0;++i<=NF;){if($i ~ /[0-9]/){gsub(c,x,$i)}}}1' OFS=,

Fantastic malcomex999

But please clarify me few things in your code.

a) what does 'x' signify here? I am not seeing it is declared/initialized elsewhere
b) How can I use the the pattern, single quotes inside the gsub() instead of declaring a variable separately for the purpose of it?
c) One of the element in the array is having '11', but we just have the character class pattern /[0-9]/ to match this '11' instead of the multi-pattern /[0-9]*/. How this works for the multiple instances of the same pattern (i.e) digit?
d) Finally, if I want to remove the "if" statement and to make it simple with just $i ~ /[0-9], how to re-arrange the syntax?
# 13  
Old 02-03-2011
Quote:
Originally Posted by royalibrahim
Fantastic malcomex999

But please clarify me few things in your code.

a) what does 'x' signify here? I am not seeing it is declared/initialized elsewhere
b) How can I use the the pattern, single quotes inside the gsub() instead of declaring a variable separately for the purpose of it?
c) One of the element in the array is having '11', but we just have the character class pattern /[0-9]/ to match this '11' instead of the multi-pattern /[0-9]*/. How this works for the multiple instances of the same pattern (i.e) digit?
d) Finally, if I want to remove the "if" statement and to make it simple with just $i ~ /[0-9], how to re-arrange the syntax?
a) You don't need to declare a variable in awk so x is null.
b) gsub(/\047/,x,$i)
c) $i ~ /[0-9]/ matches any digit found in the element. i.e, it matches 11,a11,11a,1a1,aa1. So, it matches in the element that include any digit(0-9).
d) You may need to find a way for that.Smilie
This User Gave Thanks to malcomex999 For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace Double quotes within double quotes in a column with space while loading a CSV file

Hi All, I'm unable to load the data using sql loader where there are double quotes within the double quotes As these are optionally enclosed by double quotes. Sample Data : "221100",138.00,"D","0019/1477","44012075","49938","49938/15043000","Television - 22" Refurbished - Airwave","Supply... (6 Replies)
Discussion started by: mlavanya
6 Replies

2. Shell Programming and Scripting

Replacing double quotes with the unicodes "urgent!"

Hi, I have the following text in a file <div class="snippet abstract"> We present a new "model" for multiple-input-multiple-output (MIMO) 'outdoor' has many things "what" ever </div></a href=sdfkkf"> </div> <div class="snippet context"> I have to replace the string between the <div... (1 Reply)
Discussion started by: vms
1 Replies

3. Shell Programming and Scripting

Removing quotes within quotes

Hello everyone, I am working on a file with thousands of lines and instead of manually removing them I need a script to remove quotes within quotes. For example a line may have something such as this: "Hey, I was ready to go on stage or "break a leg", but I failed miserably." So I need to... (15 Replies)
Discussion started by: tastybrownies
15 Replies

4. Shell Programming and Scripting

Issue with Single Quotes and Double Quotes for prompt PS1

Hi, Trying to change the prompt. I have the following code. export PS1=' <${USER}@`hostname -s`>$ ' The hostname is not displayed <abc@`hostname -s`>$ uname -a AIX xyz 1 6 00F736154C00 <adcwl4h@`hostname -s`>$ If I use double quotes, then the hostname is printed properly but... (3 Replies)
Discussion started by: bobbygsk
3 Replies

5. Shell Programming and Scripting

sed replacing quotes

Hi! I'd like to ask for help with the following problem: Using sed all double quotes (") in a textfile should be replaced with two of them ("") but not - and here is my problem - if two are already present ("")... For example: "this is an ""sample"" text" should be ""this is an... (6 Replies)
Discussion started by: rweber
6 Replies

6. Shell Programming and Scripting

Having a terrible problem with quotes/single quotes!

Hello. I'm trying to write a bash script that uses GNU screen and have hit a brick wall that has cost me many hours... (I'm sure it has something to do with quoting/globbing, which is why I post it here) I can make a script that does the following just fine: test.sh: #!/bin/bash # make... (2 Replies)
Discussion started by: jondecker76
2 Replies

7. Shell Programming and Scripting

Replacing comma with in double quotes in a csv file

Hello, I need to read a csv file and I am trying to replace a comma with a text DSEE?DSEE. Example Input "Chapter","NewTrains, "oldTrains","Delayed",10,"London" "Chapter","Newbuses,oldbuses","On Time",20,"London" Output "Chapter","NewTrainsDSEE?DSEE... (5 Replies)
Discussion started by: venkatvani
5 Replies

8. UNIX for Dummies Questions & Answers

grep single quotes or double quotes

Unix superusers, I am new to unix but would like to learn more about grep. I am very familiar with regular expressions as i have used them for searching text files in windows based text editors. Since I am not very familiar with Unix, I dont understand when one should use GREP with the... (2 Replies)
Discussion started by: george_vandelet
2 Replies

9. Shell Programming and Scripting

Single quotes and double quotes

Hi guys, I have a sed line in double quotes which works fine, but I want it to be in single quotes here is the sed line sed "/abc_def/s/\'.*\'/\'\${abc_def}\'/" can some one give the equivalent to the above script in single quotes Thanks a ton (5 Replies)
Discussion started by: sol_nov
5 Replies

10. Shell Programming and Scripting

Double quotes or single quotes when using ssh?

I'm not very familiar with the ssh command. When I tried to set a variable and then echo its value on a remote machine via ssh, I found a problem. For example, $ ITSME=itsme $ ssh xxx.xxxx.xxx.xxx "ITSME=itsyou; echo $ITSME" itsme $ ssh xxx.xxxx.xxx.xxx 'ITSME=itsyou; echo $ITSME' itsyou $... (3 Replies)
Discussion started by: password636
3 Replies
Login or Register to Ask a Question