Extracting strings surrounded by parentheses and seperate by commas


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Extracting strings surrounded by parentheses and seperate by commas
# 1  
Old 01-16-2009
Extracting strings surrounded by parentheses and seperate by commas

Excuse the terrible title.

I have a text file of 1..n lines, each one containing at least one string between parentheses. Within each string, there is one or more strings separated by commas. I need to extract each string, thus:

input file:

(THIS,THAT)
(THE,OTHER)
(THING)
(OR,MAYBE)
(THIS,THING)

Would result in:

THIS
THAT
THE
OTHER
THING
OR
MAYBE
THIS
THING

I'm pulling some stuff over from an IBM mainframe to Unix and I need to do some work on the resulting strings.

awk is it...I just suck at it.

Kindest regards,
Kris
# 2  
Old 01-16-2009
Code:
tr -sc 'a-zA-Z' '\n' < FILE

# 3  
Old 01-17-2009
You might want to add something to delete the first line of the resulting file as the tr does a great job but also translates the first bracket into a blank line before your data so you end up with an additional line.

Code:
tr -sc 'a-zA-Z' '\n' < FILE

THIS
THAT
THE
OTHER
THING
OR
MAYBE
THIS
THING

sed does the trick:
Code:
tr -sc 'a-zA-Z' '\n' < FILE|sed '1d'
THIS
THAT
THE
OTHER
THING
OR
MAYBE
THIS
THING

# 4  
Old 01-17-2009
Maybe I am not thinking clearly..

How does tr work? I mean, I tested it, and it clearly works. Maybe I do not understand the arguments for it. The man pages make it seem as though all it will do is replace SET1 with SET2, so how does: tr -sc 'a-zA-Z' '\n' make it just replace () and comas? Seems like it is basically replacing the opposite, (grep -v comes to mind..).

-c, -C, --complement
first complement SET1

-s, --squeeze-repeats
replace each input sequence of a repeated character that is listed in SET1 with a single occurrence of that character
# 5  
Old 01-17-2009
Quote:
Originally Posted by Rhije
Maybe I am not thinking clearly..

How does tr work? I mean, I tested it, and it clearly works. Maybe I do not understand the arguments for it. The man pages make it seem as though all it will do is replace SET1 with SET2, so how does: tr -sc 'a-zA-Z' '\n' make it just replace () and comas?

It replaces every character that is not part of 'a-zA-Z' with a newline.
# 6  
Old 01-17-2009
Quote:
Originally Posted by MarkR
You might want to add something to delete the first line of the resulting file as the tr does a great job but also translates the first bracket into a blank line before your data so you end up with an additional line.

If the result is being pulled into a variable, there's no need for sed:

Code:
list=$( tr -sc 'a-zA-Z' '\n' < FILE )
list=${list#?}

# 7  
Old 01-18-2009
Code:
sed 's/[()]//g' a.txt | tr "," "\n"

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to match fields surrounded by double quotes with commas?

Hello to all, I'm trying to match only fields surrounded by double quotes that have one or more commas inside. The text is like this "one, t2o",334,"tst,982-0",881,"kmk 9-l","kkd, 115-001, jj-3",5 The matches should be "one, t2o" "tst,982-0" "kkd, 115-001, jj-3" I'm trying with... (11 Replies)
Discussion started by: Ophiuchus
11 Replies

2. Shell Programming and Scripting

Help with extracting data within parentheses

This is my input file: a|b|c(ef)|g|h(km)|p My output file should look like: a|b|ef|g|km|p That is, pipe is the delimiter. The data within pipe must be displayed as it is but if it encounters any data within parentheses, then only the data within parentheses has to be displayed ( the data... (2 Replies)
Discussion started by: ksatish89
2 Replies

3. Windows & DOS: Issues & Discussions

Extracting variables between commas : GAWK or SED

Hello, I need some help, I got a CSV file called test.txt with this text in it : 08/02/2011;0,677;0,903;1,079;1,336;1,513;1,683 There's only a line and i need to copy theese numbers into variables : 0,677 0,903 1,079 1,336 1,513 1,683 The output file should look like this... (5 Replies)
Discussion started by: jujulips
5 Replies

4. UNIX for Dummies Questions & Answers

Replace all occurrences of strings with parentheses

Hi, I tried to adapt bartus's solution to my problem, without success. I want to replace all the occurences of this: with: , where something can contain an arbitrary number of balanced parens and brakets. Any ideas ? Best, (1 Reply)
Discussion started by: ff1969ff1969
1 Replies

5. Shell Programming and Scripting

Extracting text between two strings

Hi, I've looked at a few existing posts on this, but they don't seem to work for my inputs. I have a text file where I want to extract all the text between two strings, every time that occurs. Eg my input file is Anna said that she would fetch the bucket. Anna and Ben moved the bucket.... (9 Replies)
Discussion started by: JamesForeman
9 Replies

6. Shell Programming and Scripting

extracting numbers from strings

Hello all, I am being dumb with this and I know there is a simple solution. I have a file with the follwing lines bc stuff (more)...............123 bc stuffagain (moretoo)............0 bc stuffyetagain (morehere)......34 failed L3 thing..............1 failed this... (2 Replies)
Discussion started by: gobi
2 Replies

7. UNIX for Dummies Questions & Answers

comparing strings in seperate files

Hello, I am comparing files with for mismatches using fgrep but I've run into a problem. fgrep -vf $file1 $file2 > mismatches.dat file1 and file2 both contain file names on each line file1 has filenames which are up to 92 characters long and contain the "$" char. example file name:... (2 Replies)
Discussion started by: orahi001
2 Replies

8. Shell Programming and Scripting

Extracting the lines between 2 strings of a file

Hi, I have a sql file and i need to extract the table names used in the sql file using a unix script. If i can extract the lines between the keywords 'FROM' and 'WHERE' in the file, my job is done. can somebody tell me how to do this using a shell script. If u can just let me know, how to... (2 Replies)
Discussion started by: babloo
2 Replies

9. Shell Programming and Scripting

Help with extracting strings from a file

I want to collect the characters from 1-10 and 20-30 from each line of the file and take them in a file in the following format.Can someone help me with this : string1,string2 string1,string2 string1,string2 : : : : (7 Replies)
Discussion started by: cmsdelhi
7 Replies

10. UNIX for Dummies Questions & Answers

Extracting strings

Hi, How do I extract the bytes size string from the ls -l command. (1 Reply)
Discussion started by: hugow
1 Replies
Login or Register to Ask a Question