Sponsored Content
Top Forums Shell Programming and Scripting Awk numeric range match only one digit? Post 302569804 by meridionaljet on Tuesday 1st of November 2011 03:25:03 PM
Old 11-01-2011
Awk numeric range match only one digit?

Hello,

I have a text file with lines that look like this:

Code:
1974 12 27 -0.72743 -1.0169 2 1.25029 
1974 12 28 -0.4958 -0.72926 2 0.881839 
1974 12 29 -0.26331 -0.53426 2 0.595623 
1974 12 30 7.71432E-02 -0.71887 3 0.723001 
1974 12 31 0.187789 -1.07114 3 1.08748 
1975 1 1 0.349933 -1.02217 3 1.08041 
1975 1 2 0.401935 -1.21842 3 1.28301 
1975 1 3 0.545325 -1.0697 3 1.20068 
1975 1 4 0.240114 -1.05894 3 1.08583

I want awk to search the 2nd field (which represents months) and spit out lines where that field's numeric value falls within a certain range. My code for this is:

Code:
echo "Please pick a numerical range (e.g. 6-9 for Jun-Sep)"
read months
awk '$2 ~ /['$months']/ {print $0}' file1.txt > file2.txt

This works great for, say, the range 6-9, but the problem is that for a month system, the numbers 1 and 2 will be matched in the numbers 10, 11, and 12, so a search for "1-3" (January-March) will return October, November, and December values that I don't want. I have tried forcing only a 1-digit match using:

Code:
awk '$2 ~ /['$months']{1}/ {print $0}' mjo-tmp0.txt > mjo-tmp1.txt

...but that doesn't work(it returns nothing), and even if it did, it would eliminate searches for double-digit months like "10-12". Is there a way for me to get awk to search only for exact matches within the numerical range? Any help would be appreciated.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

numeric range comparisons

I have two files.And a sort of matrix analysis. Both files have a string followed by two numbers: File 1: A 2 7 B 3 11 C 5 10 ...... File 2: X 1 10 Y 3 5 Z 5 9 What I'd like to do is for each set of numbers in the second file indicate if the first or second number (or both) in... (7 Replies)
Discussion started by: dcfargo
7 Replies

2. Shell Programming and Scripting

match range of different numbers by AWK

if the column1 and 2 in both files has same key (for example "a" and "a1") compare each first key value(a1 of a) of input2 (for example 1-4 or 65-69 not 70-100 or 44-40 etc) with all the values in input1. if the range of first key value in input2 is outof range in input1 values named it as out... (54 Replies)
Discussion started by: repinementer
54 Replies

3. Shell Programming and Scripting

awk to match a numeric range specified by two columns

Hi Everyone, Here's a snippet of my data: File 1 = testRef2: A1BG - 13208 13284 AAA1 - 34758475 34873943 AAAS - 53701240 53715412File 2 = 42MLN.3.bedS2: 13208 13208 13360 13363 13484 13518 13518My awk script: awk 'NR == FNR{a=$1;next} {$1>=a}{$1<=a}{print... (5 Replies)
Discussion started by: heecha
5 Replies

4. Programming

Perl : Numeric Range Pattern Matching

hi Experts just wondering if you can help me check a number between a specific range if i have an ip address , how can i say the valid number for ip between 1 to 254 something like this if ($ip ) =~ /.../ { } what the pattern i need to type thanks (3 Replies)
Discussion started by: doubando
3 Replies

5. Shell Programming and Scripting

awk length of digit and print at most right digit

Have columns with digits and strings like: input.txt 3840 3841 3842 Dav Thun Tax Cahn 146; Dav. 3855 3853 3861 3862 Dav Thun Tax 2780 Karl VI., 3873 3872 3872 Dav Thun Tax 3894 3893 3897 3899 Dav Thun Tax 403; Thun 282. 3958 3959 3960 Dav Thun Tax 3972 3972 3972 3975 Dav Thun Tax... (8 Replies)
Discussion started by: sdf
8 Replies

6. Shell Programming and Scripting

Zipping files by numeric name range

Hi there, Not being too up on bash shell programming at this point, could anyone throw me a bone about how to zip up a set of numerically-named files by range? For example, in a folder that contains files 1.pdf through 132000.pdf, I'd like to zip up just those files that are 50000.pdf and... (6 Replies)
Discussion started by: enwood
6 Replies

7. Shell Programming and Scripting

awk to update specific value in file with match and add +1 to specific digit

I am trying to use awk to match the NM_ in file with $1 of id which is tab-delimited. The NM_ will always be in the line of file that starts with > and be after the second _. When there is a match between each NM_ and id, then the value of $2 in id is substituted or used to update the NM_. Each NM_... (3 Replies)
Discussion started by: cmccabe
3 Replies

8. Shell Programming and Scripting

Get range out using sed or awk, only if given pattern match

Input: START OS:: UNIX Release: xxx Version: xxx END START OS:: LINUX Release: xxx Version: xxx END START OS:: Windows Release: xxx Version: xxx ENDHere i am trying to get all the information between START and END, only if i could match OS Type. I can get all the data between the... (3 Replies)
Discussion started by: Dharmaraja
3 Replies

9. Shell Programming and Scripting

awk to print text in field if match and range is met

In the awk below I am trying to match the value in $4 of file1 with the split value from $4 in file2. I store the value of $4 in file1 in A and the split value (using the _ for the split) in array. I then strore the value in $2 as min, the value in $3 as max, and the value in $1 as chr. If A is... (6 Replies)
Discussion started by: cmccabe
6 Replies

10. UNIX for Beginners Questions & Answers

I need to find in a file a list of number where last two digit end in a range

I all I am tryng to find a way to sort a list of number in a file by the value of last two digit. i have a list like this 313202320388 333202171199 373202164587 393202143736 323202132208 353201918107 343201887399 363201810249 333201805043 353201791691 (7 Replies)
Discussion started by: rattoeur
7 Replies
DIGITTOINT(3)						   BSD Library Functions Manual 					     DIGITTOINT(3)

NAME
digittoint, digittoint_l -- convert a numeric character to its integer value LIBRARY
Standard C Library (libc, -lc) SYNOPSIS
#include <ctype.h> int digittoint(int c); #include <xlocale.h> #include <ctype.h> int digittoint_l(int c, locale_t loc); DESCRIPTION
The digittoint() function converts a numeric character to its corresponding integer value. The character can be any decimal digit or hexa- decimal digit. With hexadecimal characters, the case of the values does not matter. While the digittoint() function uses the current locale, the digittoint_l() function may be passed a locale directly. See xlocale(3) for more information. RETURN VALUES
The digittoint() function always returns an integer from the range of 0 to 15. If the given character was not a digit as defined by isxdigit(3), the function will return 0. SEE ALSO
ctype(3), isdigit(3), isxdigit(3), xlocale(3) BSD
April 6, 2001 BSD
All times are GMT -4. The time now is 03:44 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy