way to print all the string till we get a space and a number


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting way to print all the string till we get a space and a number
# 1  
Old 01-19-2009
way to print all the string till we get a space and a number

Is there any way to print all the string till we get a space and a number and store it a variable

for eg we have string java.io.IOException: An existing connection was forcibly closed by the remote host 12

All I want is to store "java.io.IOException: An existing connection was forcibly closed by the remote host" in a variable and "12" in another variable.

Plz give the solution with for loop, as I have lot of string like this.Plz help me on this.

Note: end of the string or seperation point is "space and a number".
# 2  
Old 01-19-2009
hope below can give you some clue

Code:
echo "I am a man whose age is 30" | sed 's/\(.*\)\( [0-9][0-9]*\)/var1=\1 -- var2=\2/'

# 3  
Old 01-19-2009
The solution is perfect.Thanks a lot.

But one problem here is that the string could be anything (dynamic string).

We cannot decide a string like in this case above.Plz help on that too.Thanks a ton guys.
# 4  
Old 01-19-2009
My script o/p is as below

0 892
SetExpressCheckout 4
DoExpressCheckout Payment 4
0-211 3
GetExpressCheckoutDetails 4
3.auth error.INTERNAL.5005 1
2.NVPPAYMENTSERV INTERNAL 0(10002) 1
2.NVPPAYMENTSERV INTERNAL.5005 1

Table generation time : 0.61 ms
Cube clean time : 1.93 ms

i=0,the logic that I applied was store this o/p in a single variable called "col".
then col[i] =0 and col[i+1]=892 so on and increment i with 2.

But the problem I found was with
DoExpressCheckout Payment
2.NVPPAYMENTSERV INTERNAL 0(10002) 1
2.NVPPAYMENTSERV INTERNAL.5005 1

as I wanted "DoExpressCheckout Payment" to be assigned to col[i] but instead "DoExpressCheckout" was assigned and the "Payment" was treated as a seperate variable.But I want this not happen.

I want the o/p to be parsed and when a condition like "space + number" is met then store that entire string to a variable.
# 5  
Old 01-19-2009
Here is one solution based using ksh93 extended patterns but it can easily be converted into regular expressions for use in bash, sed, etc.
Code:
while IFS= read str
do
   col1=${str/*([[:print:]])([[:space:]])+([[:digit:]])/\1}
   col2=${str/*([[:print:]])([[:space:]])+([[:digit:]])/\3}
   printf "COL1: ${col1}   COL2: ${col2}\n"
done < file

Here is the output for the example list you provided
Code:
COL1: 0   COL2: 892
COL1: SetExpressCheckout   COL2: 4
COL1: DoExpressCheckout Payment   COL2: 4
COL1: 0-211   COL2: 3
COL1: GetExpressCheckoutDetails   COL2: 4
COL1: 3.auth error.INTERNAL.5005   COL2: 1
COL1: 2.NVPPAYMENTSERV INTERNAL 0(10002)   COL2: 1
COL1: 2.NVPPAYMENTSERV INTERNAL.5005   COL2: 1

# 6  
Old 01-19-2009
Question

Is the space and number always the last two things on every line?
# 7  
Old 01-20-2009
vi file.sh ==>

while IFS= read str
do
col1=${str/*([[:print:]])([[:space:]])+([[:digit:]])/\1}
col2=${str/*([[:print:]])([[:space:]])+([[:digit:]])/\3}
printf "COL1: ${col1} COL2: ${col2}\n"
done < input

vi input==>

0 892
SetExpressCheckout 4
DoExpressCheckout Payment 4
0-211 3
GetExpressCheckoutDetails 4
3.auth error.INTERNAL.5005 1
2.NVPPAYMENTSERV INTERNAL 0(10002) 1
2.NVPPAYMENTSERV INTERNAL.5005 1

now ./file.sh ==>

COL1: 0 892 COL2: 0 892
COL1: SetExpressCheckout 4 COL2: SetExpressCheckout 4
COL1: DoExpressCheckout Payment 4 COL2: DoExpressCheckout Payment 4
COL1: 0-211 3 COL2: 0-211 3
COL1: GetExpressCheckoutDetails 4 COL2: GetExpressCheckoutDetails 4
COL1: 3.auth error.INTERNAL.5005 1 COL2: 3.auth error.INTERNAL.5005 1
COL1: 2.NVPPAYMENTSERV INTERNAL 0(10002) 1 COL2: 2.NVPPAYMENTSERV INTERNAL 0(10002) 1
COL1: 2.NVPPAYMENTSERV INTERNAL.5005 1 COL2: 2.NVPPAYMENTSERV INTERNAL.5005 1

:confused: plz tell me what is wrong with the code.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Print String N times the number before it

Hey All, I want want to print a string N times the number N before it. Like i have "20 hello". so i want to print hello hello hello . . . . . 20 times.. Please help me.. I am not able o figure out.. how to do the same? (8 Replies)
Discussion started by: jaituteja
8 Replies

2. Shell Programming and Scripting

Adding variable number of space in between two string

Hi, I am looking for the way to add variable number of spaces between two string. e.g input line is a ,bb abc ,bcb pqr ,bfg My output should be something like this a ,bb abc ,bcb pqr ,bfg This text... (9 Replies)
Discussion started by: diehard
9 Replies

3. Shell Programming and Scripting

Print characters till the next space when the pattern is found

i have a file which contains alphanumeric data in every line. what i need is the data after certain pattern. the data after the pattern is not of fixed length so i need the data till the space after the pattern. Input file: bfdkasfbdfg khffkf lkdhfhdf pattern (datarequired data not required)... (2 Replies)
Discussion started by: gpk_newbie
2 Replies

4. Shell Programming and Scripting

find string nth occurrence in file and print line number

Hi I have requirement to find nth occurrence in a file and capture data from with in lines (between lines) Data in File. <QUOTE> <SESSION> <ATTRIBUTE NAME='Parameter Filename' VALUE='file1.parm'/> <ATTRIBUTE NAME='Service Name' VALUE='None'/> </SESSION> <SESSION> <ATTRIBUTE... (6 Replies)
Discussion started by: tmalik79
6 Replies

5. Programming

Find and print number after string in C

I'm trying find and print a number after a specific user passed string in each line of a text file using C (as requested by the powers that be). I've pieced together enough to read the file, find the string and print the line it was found on but I’m not sure where to even start in terms of finding... (3 Replies)
Discussion started by: cgol
3 Replies

6. Shell Programming and Scripting

Bash take word after specific point and till next space?

Hello, I have an output like Interface Chipset Driver wlan0 Intel 4965/5xxx iwlagn - and I want to take only the 'wlan0' string. This can be done by a="Interface Chipset Driver wlan0 Intel 4965/5xxx iwlagn - " b=${a:25:6} echo $bThe thing is that wlan0 can be something else, like eth0 or... (2 Replies)
Discussion started by: hakermania
2 Replies

7. Shell Programming and Scripting

Remove line starting from space till end.

Hi, I have a code tag, from which i have the below snippet: intelrpt.GetCMB_FB type=ODBC> intelrpt.GetCMB_FB type=SYBASE> I want the output like: intelrpt.GetCMB_FB intelrpt.GetCMB_FB That is remove the lines starting from WHITESPACE till end. Please help. I am new to... (7 Replies)
Discussion started by: anupdas
7 Replies

8. Shell Programming and Scripting

awk or sed command to print specific string between word and blank space

My source is on each line 98.194.245.255 - - "GET /disp0201.php?poc=4060&roc=1&ps=R&ooc=13&mjv=6&mov=5&rel=5&bod=155&oxi=2&omj=5&ozn=1&dav=20&cd=&daz=&drc=&mo=&sid=&lang=EN&loc=JPN HTTP/1.1" 302 - "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.0.3705; .NET CLR... (5 Replies)
Discussion started by: elamurugu
5 Replies

9. Shell Programming and Scripting

How to print the number of lines from a file, the starting string should be passed`

Hi , I have file, which has the below content: line 100 a b c d line300 a s d f s line200 a s d a (3 Replies)
Discussion started by: little_wonder
3 Replies

10. Shell Programming and Scripting

How to print lines till till a pattern is matched in loop

Dear All I have a file like this 112534554 446538656 444695656 225696966 226569744 228787874 113536566 443533535 222564552 115464656 225445345 225533234 I want to cut the file into different parts where the first two columns are '11' . The first two columns will be either... (3 Replies)
Discussion started by: anoopvraj
3 Replies
Login or Register to Ask a Question