Tricky sed required


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Tricky sed required
# 1  
Old 05-21-2013
Tricky sed required

Hi All

I need to put some sed together for a task and its a bit advanced for me, so I thought I'd ask if anyone here could help.

I have a csv file with content like this -

Code:
"['1235','3234']","abcde","[1234]","['1235','3234']"
"'","abcde","[1235]","['1236','2234']"
"[1236]","['1237','1234']","","1234"
"'e'","[1237]","['1238','0234']",""

I need to remove any single quotes that fall between [ ], and also the [ ] themselves.

so -
Code:
"['1238','0234']"

Would become -
Code:
"1238,0234"

While -
Code:
"[1234]"

Becomes -
Code:
"1234"

The other fields containing single quotes are unchanged and no double quotes are removed. Quoted nulls are unaffected as well.

I'd like to do this in sed as it I need to squeeze some performance out of it.

Any help greatly appreciated

Brad
# 2  
Old 05-21-2013
Can something like "'e','e'" show up in your input data?
# 3  
Old 05-21-2013
I'll go with yes

Quote:
Originally Posted by bartus11
Can something like "'e','e'" show up in your input data?
Hi

Thanks for the response Smilie

I'll go with yes on that.

To be honest I'm trying to anticipate some content that a bunch of developers are currently working on. I'm still unclear on exactly what they are going to do but they suggest I need to allow for at least a double quoted string that contains a single quote, so I guess two single quotes in a double quoted string is a possibility.

Cheers

Brad
# 4  
Old 05-21-2013
I guess this is too easy?
Code:
sed "s/[][']//g" myFile

# 5  
Old 05-21-2013
I don't think I completely understand your scenario... I tried and came up with below solution... hope this helps.. I am very new to Unix world, so my apologies for silly things., Smilie

sed -e 's/\[//g' -e 's/\]//g' -e "s/\'//g" testFile

Output:
Code:
"1235,3234","abcde","1234","1235,3234"
"","abcde","1235","1236,2234"
"1236","1237,1234","","1234"
"e","1237","1238,0234",""

regards,
juzz4fun
# 6  
Old 05-21-2013
Not quite there

Afraid you're right, it stripped the single quotes form around the "'e'"

Thanks anyway Smilie
# 7  
Old 05-21-2013
Try this:
Code:
perl -nle '@out=();while (/"([^"]*)"/g) {$x=$1;$x=~s/[\047\[\]]//g if $x=~/^\[/;push @out,"\"$x\""}; print join ",", @out' input

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Clarification required on sed

Hi Can some one tell what does this sed command do sed 's/*$//g I am more curious on the highlighted part , can some one explain what does that mean. Thanks Sri (1 Reply)
Discussion started by: Sri3001
1 Replies

2. Shell Programming and Scripting

sed help required

Hi All, I have one file with below type of data in it, $ cat test.txt ###123 ###xyxytuerwb ###2 ###tyupe Here I would like to replace all the characters with "x" after the 3 "###" with the same number of characters. Can you please help me to achieve this. (7 Replies)
Discussion started by: gr8_usk
7 Replies

3. Shell Programming and Scripting

sed tricky problem

Hi, I have a file which contains two strings: AAAAA and BBBBB I have two variables in my script: DATE="03/21/2010" aDate="20100321" I need to replace string AAAAA with variable $DATE and BBBBB with $aDate. Here is what I do sed "s/AAAAA/$DATE/" $BASIC_TMPLT | sed "s/BBBBB/$aDate/" >... (4 Replies)
Discussion started by: axed
4 Replies

4. Shell Programming and Scripting

Another tricky sed or awk question

This post is in reference to https://www.unix.com/shell-programming-scripting/137977-tricky-sed-awk-question-post302428154.html#post302428154 I am trying to go the opposite direction now: I have the following file: a,b,C,f,g a,b,D,f,g a,b,E,f,g h,i,J,k,l m,n,O,t,u m,n,P,t,u m,n,Q,t,u... (3 Replies)
Discussion started by: awayand
3 Replies

5. Shell Programming and Scripting

Tricky sed or awk question

Hello everyone, unfortunately I am no unix nor scripting guru, which is why I am asking for help here. I am trying to reformat a .csv file using sed or awk which has the following format: a,b,C-D-E,f,g h,i,J,k,l m,n,O-P-Q-R-S,t,u v,w,X-Y,z,a It's basically a 5-field text file which has an... (7 Replies)
Discussion started by: awayand
7 Replies

6. Shell Programming and Scripting

Help required with awk/sed

Hi I have a file, with format like: column1|coulumn2|column3|column4 A|X|K|18 L|O|R|31,42,25 G|H|I|55,66 L|E|Q|25,31,94 output required: column1|coulumn2|column3|column4 A|X|K|18 L|O|R|31,25 L|E|Q|25,31 Input File Format: All columns are seperated using |, last column... (8 Replies)
Discussion started by: New to awk
8 Replies

7. Shell Programming and Scripting

Help required in sed or awk.

Hi All, I need to pick up data on both sides of "=" sign. For eg, following is the context that I have. 125.156.125.147=machine1 147.125.185.156=machine2 147.125.185.159=machine3 Can I have the ip address in one variable and machine name in another variable using sed or awk. ... (1 Reply)
Discussion started by: nua7
1 Replies

8. Shell Programming and Scripting

Help in sed required.

Hi All, I am facing a small problem in sed. I want to insert a line in the existing file. Existing code: access to attr=userPassword by self write by * auth access to * by self write by users read by anonymous auth Desired code: access to attr=userPassword by self... (14 Replies)
Discussion started by: nua7
14 Replies

9. UNIX for Dummies Questions & Answers

Sed-- command help required

Hi Gurus, I have a small requirement. Let suppose i have a file test.txt test.txt contains Dispatched date = '2008-04-08' Name = 'Logers' Now i want to add one more line to it as Number of Responses = "$a" $a will be chnaging dynamically which i had grepped it in the script. Now i... (6 Replies)
Discussion started by: pssandeep
6 Replies

10. Shell Programming and Scripting

Tricky Sed

Hello. I am trying to convert occurrences of 'NULL' from a datafile. The 'NULL' occurences appears at this: |NULL| NULL|NULL| NULL|NULL| NULL|NULL| NULL| There should be 52 fields per line. I would like any occurrence of | NULL| or |NULL| to appear as '||' Currently I am using this sed... (2 Replies)
Discussion started by: bestbuyernc
2 Replies
Login or Register to Ask a Question