To Create range of values


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting To Create range of values
# 1  
Old 10-12-2009
To Create range of values

Hi,

I have a file with the below like values with integers only in sorted order (May or may not be in sequence)

Eg: File1.txt
-----------
1
2
3
4
5
6
.
.
.
.
.
10000

My requirement here is to create a range of values out put to a temp k
file based on the percentage that i input to the File1.txt .
Suppose if i execute the shell script with the 10(percentage) as input,my out put would look like this in temp file
1-1000
1001-2000
2001-3000
.
.
.
9001-10000

Please help me with script
# 2  
Old 10-12-2009
hmm - what happens / do you want to happen if your percentage doesn't divide exactly into 100 in integer chunks e.g. 14. would you want:

Code:
1 - 1400
1401 - 2800
2801 - 4200
4201 - 5600
5601 - 7000
7001 - 8400
8401 - 9800

Or would you also want the 9801-10000 range ?

Assuming you're not too worried about this, and that as noted the last entry in your file is the largest then:

Code:
#  echo $(tail -1 infile) 10 | awk '{for (i=0;i<=100/$2;i++){t[i]=$1*$2*i/100}}{for (j=1;j<=100/$2;j++){print t[j-1]+1,"-",t[j]}}'
1 - 1000
1001 - 2000
2001 - 3000
3001 - 4000
4001 - 5000
5001 - 6000
6001 - 7000
7001 - 8000
8001 - 9000
9001 - 10000

should get you headed in the right direction....HTH
# 3  
Old 10-12-2009
Hi Tytalus,

Appreciate your response.

As you said i require the range 9801-10000 (Or would you also want the 9801-10000 range ?) and it is mandate also.

Thank you

---------- Post updated at 07:31 PM ---------- Previous update was at 06:19 PM ----------

Hi,

My integers are created in the below range with 2600 values ,and i inputted to the script sent by you with the below input and 50 as dividing factor

0000000433874674
.
.
.
.
.
0000000433877573

i end up in below result .

1 - 2.16939e+08
2.16939e+08 - 433877573

Now we have two requirements below.

1) We want to have the chunks even it is divided by 14 as you said in your earlier post
2) And we want to avoid the exponential parts as put up in the above example .

Thanks in Advance
# 4  
Old 10-13-2009
aah - so they don't neccessarily start from 1...

urg.. ok following code snippet should point you in right lines:

Code:
#  echo "0000000433874674 0000000433877573 10" | awk '{for (i=0;i<100/$3;i++){t[i]=($2-$1)*$3*i/100}}   {if (t[i]<$1){t[i++]=$2-$1}}   {for (j=1;j<i;j++){printf("%d - %d\n",t[j-1]+1+$1,t[j]+$1)}}'
433874675 - 433874963
433874964 - 433875253
433875254 - 433875543
433875544 - 433875833
433875834 - 433876123
433876124 - 433876413
433876414 - 433876703
433876704 - 433876993
433876994 - 433877283
433877284 - 433877573

HTH
# 5  
Old 10-14-2009
Hi Tytalus,

Appreciate ur response.

Some more requirements after executing your script are below .if you can help me out your script with the below requirements i would be very happy.

1) I want zeros also to be printed
2) i shouldn't have the space before and after the "-"

Eg: present o/p :433874675 - 433874963
Expected O/P: 0000000433874675-0000000433874963 (with zeros and no space before and after "-")
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Create range of values and count values.

Gents, It is possible to generate a range of values according to column 1 and count the total of rows in the range. example input 15.3 15.5 15.8 15.9 16.0 16.1 16.8 17.0 17.5 18.0 output desired 15.0 - 15.9 = 4 (10 Replies)
Discussion started by: jiam912
10 Replies

2. Shell Programming and Scripting

Find values within range and output

Dear All, I am stacked and I ask for your help. Briefly, I have two files, one like this one (file1): 1 101 5 1 102 6 1 103 2 1 104 9 1 105 10 2 301 89 2 302 4 2 303 13 2 304 34 2 305 1 and the other like this one (file2): 1 103 2 303well, what I am trying to do is obtain a... (2 Replies)
Discussion started by: giuliangiuseppe
2 Replies

3. Shell Programming and Scripting

How to create individual entries from a range of numbers?

I want to create entries based on the series as in examples below: Input: 2dat3 grht-5&&-15 3dat3 grht-16&&-30 4dat3 ftht-4&&-12 5sat3 ftht-16&&-20 Output: 2dat3 grht-5 2dat3 grht-6 2dat3 grht-7 2dat3 grht-8 (7 Replies)
Discussion started by: aydj
7 Replies

4. Shell Programming and Scripting

Convert Column Values to a Range of Values

I have a list of columns with values that I need to transform into a row containing the range of each column. For example: "Column A" 1 2 3 4 10 12 14 15 16 17 18 "Column B" 1 4 5 6 (4 Replies)
Discussion started by: newbio
4 Replies

5. Shell Programming and Scripting

AWK Sorting with range values

Hello, I am looking for some help on GAWK script. I have a list of phone numbers as below. I need to sort these in the range of first 6 digits. 2402170338 2402170387 2402170478 2402170744 2403100025 2403100026 2403100027 2403100028 So for the above sample data, I require an output... (9 Replies)
Discussion started by: Diwakar9
9 Replies

6. Programming

grepping a range of values

I need to return all records in a file starting with a row that says TABLE: <tabl name> lists of hexadecimal records TABLE: <some table> TABLe is a key word in the file. I know the name of the table I want to start with. I do not know the name of the table that I will end with. I just... (4 Replies)
Discussion started by: guessingo
4 Replies

7. Shell Programming and Scripting

For Loop Range Create Directories

Hello, I am a bit stumped on this. I am attempting to create 24 empty directories with a loop. Seems like I have incorrect syntax. When I run the following command I get the error below. Command $ for i in {2..24}; do mkdir $i_MAY_2011 ; doneError x 24 mkdir: missing operand Try `mkdir... (2 Replies)
Discussion started by: jaysunn
2 Replies

8. Programming

Finding range of values in an array

I have an array containing distances in ascending order, for example: distances = 100 120 150 170 200 280 300 .... I have a number, let's say v = 170 and a variation value, let's say var = 100 . I want to return the array indexes for which the distances cover the range (v - var) to (v +... (3 Replies)
Discussion started by: kristinu
3 Replies

9. Shell Programming and Scripting

Awk extract a range of values

Hi Input 10 131 11 179 11 170 20 142 20 131 20 144 21 178 22 155 22 196 23 144 23 184 24 194 24 191 24 218 25 167 25 131 26 189 (6 Replies)
Discussion started by: genehunter
6 Replies

10. Shell Programming and Scripting

Create range from a list

Hello everyone, I am trying to create a script that will make a range or ranges based on a sorted list of numbers. Eg. If the list is like 1 2 3 4 5 6 7 12 13 14 15 The output range should be: 1-7 12-15 (9 Replies)
Discussion started by: run_time_error
9 Replies
Login or Register to Ask a Question