Join 2 separate strings into one with alternate tokens.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Join 2 separate strings into one with alternate tokens.
# 22  
Old 07-06-2011
I have a new situation now:

string1="abc|def|hij"
string2="1212,2134,1245"
string3="123:1,134:2,145:3"

string4="abc:1212 def:2134 hij:1245"
string5="123:abc:1 134:def:2 145:hij:3"
final_string=string4+string5

Instead of pipes now I have commas in the other strings except the first string.
How would you change the scripts accordingly??
# 23  
Old 07-06-2011
I am confused with your last post especially with string3 :
Is it already built ? or are you requesting to build that string3 from some other string (and which) ?

Code:
$ string1="abc|def|hij"
$ string2="1212,2134,1245"
$ echo $string1 $string2 | tr ',|' '  ' | xargs -n1 | pr -2 -t -s: | paste -sd, -
abc:1212,def:2134,hij:1245


Last edited by ctsgnb; 07-06-2011 at 07:45 AM..
# 24  
Old 07-06-2011
string3 is already built.

string1="abc|def|hij"
string3="123:1|134:2|145:3"

I need this from string1 and string3
string5="123:abc:1 134:def:2 145:hij:3"

Thanks for the first script...

---------- Post updated at 06:23 AM ---------- Previous update was at 06:12 AM ----------

Quote:
Originally Posted by ctsgnb
I am confused with your last post especially with string3 :
Is it already built ? or are you requesting to build that string3 from some other string (and which) ?

Code:
$ string1="abc|def|hij"
$ string2="1212,2134,1245"
$ echo $string1 $string2 | tr ',|' '  ' | xargs -n1 | pr -2 -t -s: | paste -sd, -
abc:1212,def:2134,hij:1245

Ho about this? I changed your own code: Smilie
Code:
$ echo "$string2 $string1"  | tr ' ,|' '\n\n\n' | pr -2ts: | sed 's/^\([^:]*\):\([^:]*\)/\2:\1/' | xargs
abc:1231 def:1322 hij:1443

# 25  
Old 07-06-2011
Quote:
Originally Posted by sikku
string3 is already built.

string1="abc|def|hij"
string3="123:1|134:2|145:3"

I need this from string1 and string3
string5="123:abc:1 134:def:2 145:hij:3"

Thanks for the first script...

---------- Post updated at 06:23 AM ---------- Previous update was at 06:12 AM ----------



Ho about this? I changed your own code: Smilie
Code:
$ echo "$string2 $string1"  | tr ' ,|' '\n\n\n' | pr -2ts: | sed 's/^\([^:]*\):\([^:]*\)/\2:\1/' | xargs
abc:1231 def:1322 hij:1443

You are currently uselessly switching things with the sed statement which force you to give string2 before string1 :

The following would be simpler :

Code:
$ echo $string1 $string2 | tr ' ,|' '\n\n\n' | pr -2ts: | xargs
abc:1212 def:2134 hij:1245

Code:
# echo "$string1 $string3" | tr ' ,|' '\n\n\n' | pr -2ts: | sed 's/^\([^:]*\):\([^:]*\)/\2:\1/' | xargs
123:abc:1 134:def:2 145:hij:3


Last edited by ctsgnb; 07-06-2011 at 09:05 AM..
# 26  
Old 07-06-2011
Code:
echo $string1 $string2 | tr ' ,|' '\n\n\n' | pr -2 -t -s: | xargs

That did the trick... So I was doing something which was not required at all...

How about the other script? I am not able to find how to do it.
# 27  
Old 07-06-2011
Code:
# echo "$string1 $string3" | tr ' ,|' '\n\n\n' | pr -2ts: | sed 's/^\([^:]*\):\([^:]*\)/\2:\1/' | xargs 
123:abc:1 134:def:2 145:hij:3

?
This User Gave Thanks to ctsgnb For This Post:
# 28  
Old 07-06-2011
Thanks for the help..

Basically what does this code do?

Code:
 sed 's/^\([^:]*\):\([^:]*\)/\2:\1/'

Can you please explain?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help to join separate lines in a single one from xml file

Hi all, I need help to parse this xml file that has paragraphs broken in different lines and I would like to join in a single line. I hope you can understand my explanation. Thanks for any help/direction. The script could be in bash, awk, ruby, perl whatever please In the output I want:... (8 Replies)
Discussion started by: Ophiuchus
8 Replies

2. Shell Programming and Scripting

Single grep to multiple strings with separate output per string

I need to grep multiple strings from a particular file. I found the use of egrep "String1|String2|String3" file.txt | wc-l Now what I'm really after is that I need to separate word count per each string found. I am trying to keep it to use the grep only 1 time. Can you guys help ? ... (9 Replies)
Discussion started by: nms
9 Replies

3. Programming

Reading tokens

I have a String class with a function that reads tokens using a delimiter. For example String sss = "6:8:12:16"; nfb = sss.nfields_b (':'); String tkb1 = sss.get_token_b (':'); String tkb2 = sss.get_token_b (':'); String tkb3 = sss.get_token_b (':'); String tkb4 =... (1 Reply)
Discussion started by: kristinu
1 Replies

4. UNIX for Dummies Questions & Answers

How to use the the join command to join multiple files by a common column

Hi, I have 20 tab delimited text files that have a common column (column 1). The files are named GSM1.txt through GSM20.txt. Each file has 3 columns (2 other columns in addition to the first common column). I want to write a script to join the files by the first common column so that in the... (5 Replies)
Discussion started by: evelibertine
5 Replies

5. UNIX for Dummies Questions & Answers

Join 2 files with multiple columns: awk/grep/join?

Hello, My apologies if this has been posted elsewhere, I have had a look at several threads but I am still confused how to use these functions. I have two files, each with 5 columns: File A: (tab-delimited) PDB CHAIN Start End Fragment 1avq A 171 176 awyfan 1avq A 172 177 wyfany 1c7k A 2 7... (3 Replies)
Discussion started by: InfoSeeker
3 Replies

6. Shell Programming and Scripting

Replacing tokens

Hi all, I have a variable with value DateFileFormat=NAME.CODE.CON.01.#.S001.V1.D$.hent.txt I want this variable to get replaced with : var2 is a variable with string value DateFileFormat=NAME\\.CODE\\.CON\\.01\\.var2\\.S001\\.V1\\.D+\\.hent\\.txt\\.xml$ Please Help (3 Replies)
Discussion started by: abhinav192
3 Replies

7. Programming

sql,multiple join,outer join issue

example sql: select a.a1,b.b1,c.c1,d.d1,e.e1 from a left outer join b on a.x=b.x left outer join c on b.y=c.y left outer join d on d.z=a.z inner join a.t=e.t I know how single outer or inner join works in sql. But I don't really understand when there are multiple of them. can... (0 Replies)
Discussion started by: robbiezr
0 Replies

8. UNIX for Dummies Questions & Answers

How to join two strings together

There is a file: !EN ih n w ey I want to join the current instance with its previous instance together, such as: previous_instance-B+current_instance, there "-B+" is fixed iterm, the file after operate look like: !EN start-B+!EN ih !EN-B+ih n ih-B+n w... (1 Reply)
Discussion started by: Jenny.palmy
1 Replies

9. Shell Programming and Scripting

: + : more tokens expected

Hello- Trying to add two numbers in a ksh shell scripts and i get this error every time I execute stat1_ex.ksh: + : more tokens expected stat1=`cat .stat1a.tmp | cut -f2 -d" "` stat2=`cat .stat2a.tmp | cut -f2 -d" "` j=$(($stat1 + $stat2)) # < Here a the like the errors out echo $j... (3 Replies)
Discussion started by: Nomaad
3 Replies

10. UNIX for Dummies Questions & Answers

tokens in unix ?

im trying to remove all occurences of " OF xyz " in a file where xyz could be any word assuming xyz is the last word on the line but I won't always be. at the moment I have sed 's/OF.*//' but I want a nicer solution which could be in pseudo code sed 's/OF.* (next token)//' Is... (6 Replies)
Discussion started by: seaten
6 Replies
Login or Register to Ask a Question