Sponsored Content
Top Forums Shell Programming and Scripting match range of different numbers by AWK Post 302336875 by radoulov on Thursday 23rd of July 2009 04:09:05 AM
Old 07-23-2009
I really don't understand ...
Could you post a bigger samples from the input files and the expected output? Are the in/outofrange n always progressing or they are specific to the combination?
You could start with something like this (use gawk, nawk or /usr/xpg4/bin/awk on Solaris):

Code:
awk 'NR == FNR {
  NF != 1 && k = $1
  in1[k] = in1[k] ? in1[k] FS $NF : $NF
  next
  }
$1 in in1 {
  n = split(in1[$1], t, "-")
  min = t[1]; max = t[n]; split($NF, tt, "-")
  tt[1] > tt[2] ? k1 = 2 && k2 = 1 : k1 = 1 && k2 = 2 
  range = tt[k1] >= min && tt[k2] <= max ? "inrange" : "outofrange"
  $0 = $0 "\t\t" range (++r[range]) 
    }1' input*

This is what I get:

Code:
zsh-4.3.10[t]% head -20 in*
==> input1 <==
a       a1      5-10
                30-40
                45-60
                80-90
                100-120
x       a2    10-20
                50-60

==> input2 <==
a       a1      1-4
a       a1      4-1
a       a1      120-140
a       a1      140-120
a       a1      65-69
                70-100
a       a1      70-65
                44-40
a       a1      6-7
                37-57
                63-83
a       a1      7-8

zsh-4.3.10[t]% awk 'NR == FNR {
  NF != 1 && k = $1
  in1[k] = in1[k] ? in1[k] FS $NF : $NF
  next
  }
$1 in in1 {
  n = split(in1[$1], t, "-")
  min = t[1]; max = t[n]; split($NF, tt, "-")
  tt[1] > tt[2] ? k1 = 2 && k2 = 1 : k1 = 1 && k2 = 2
  range = tt[k1] >= min && tt[k2] <= max ? "inrange" : "outofrange"
  $0 = $0 "\t\t" range (++r[range])
    }1' input*
a       a1      1-4             outofrange1
a       a1      4-1             outofrange2
a       a1      120-140         outofrange3
a       a1      140-120         outofrange4
a       a1      65-69           inrange1
                70-100
a       a1      70-65           inrange2
                44-40
a       a1      6-7             inrange3
                37-57
                63-83
a       a1      7-8             inrange4

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

match numbers (awk)

i would like to enter (user input) a bunch of numbers seperated by space: 10 15 20 25 and use awk to print out any lines in a file that have matching numbers so output is: 22 44 66 55 (10) 77 (20) (numbers 10 and 20 matched for example) is this possible in awk . im using gawk for... (5 Replies)
Discussion started by: tanku
5 Replies

2. Shell Programming and Scripting

Match real numbers in AWK

I am looking for a better way to match real numbers within a specified tolerance range. My current code is as follows: if ($1 !~ /^CASE/) for(i=1;i in G;i++) if (G >= $5-1 && G <= $5+1) { print $1,$4,$5,J,G } else { print $1,"NO MATCH" } where $5 and G are... (3 Replies)
Discussion started by: cold_Que
3 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. Shell Programming and Scripting

Range of numbers in HEX using AWK

Hi , How do i found out all the number in a range ( HEX) for example Input is 15CF:15D2 Output needed 15CF 15D0 15D1 15D2 Thanks (2 Replies)
Discussion started by: greycells
2 Replies

5. Shell Programming and Scripting

Awk numeric range match only one digit?

Hello, I have a text file with lines that look like this: 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... (2 Replies)
Discussion started by: meridionaljet
2 Replies

6. Shell Programming and Scripting

Complex match of numbers between 2 files awk script

Hello to all, I hope some awk guru could help me. I have 2 input files: File1: Is the complete database File2: Contains some numbers which I want to compare File1: "NUMBERKEY","SERVICENAME","PARAMETERNAME","PARAMETERVALUE","ALTERNATENUMBERKEY"... (9 Replies)
Discussion started by: Ophiuchus
9 Replies

7. Shell Programming and Scripting

awk : match only the pattern string , not letters or numbers after that.

Hi Experts, I am finding difficulty to get exact match: file OPERATING_SYSTEM=HP-UX LOOPBACK_ADDRESS=127.0.0.1 INTERFACE_NAME="lan3" IP_ADDRESS="10.53.52.241" SUBNET_MASK="255.255.255.192" BROADCAST_ADDRESS="" INTERFACE_STATE="" DHCP_ENABLE=0 INTERFACE_NAME="lan3:1"... (6 Replies)
Discussion started by: rveri
6 Replies

8. Shell Programming and Scripting

Match on a range of numbers

Hi, I'm trying to match a filename that could be called anything from vout001 to vout252 and was trying to do a small test but I'm not getting the result I thought I would.. Can some one tell me what I'm doing wrong? *****@********>echo $mynumber ... (4 Replies)
Discussion started by: Jazmania
4 Replies

9. 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

10. 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
MIXER(1)						  The Canonical Csound Reference						  MIXER(1)

NAME
mixer - Mixes together a number of soundfiles. . DESCRIPTION
Mixes together a number of soundfiles, starting at different times and with individual channel selection from the input files. SYNTAX
mixer [OPTIONS ... ] infile [[OPTIONS... ] infile] ... INITIALIZATION
Flags: o -A = Generate an AIFF output file. o -W = Generate an WAV output file. o -h = Generate an output file with no header. o -c = Generate 8-bit signed_char sound samples. o -a = Generate alaw sound samples. o -u = Generate ulaw sound samples. o -s = Generate short integer sound samples. o -l = Generate long (32 bit) integer sound samples. o -f = Generate floating point samples. o -F arg = Specifies the gain to be applied to the following input file. If arg is a floating point number that gain is applied uniformly to the input. Alternatively it could be a file name which specifies a breakpoint file for varying the gain for different periods. o -S integer = Indicate at which sample to start to mix in the next input file. o -T fpnum = Indicate at which time (in seconds) to start to mix in the next input file. o -1 = Mix in channel 1 from next sound file. o -2 = Mix in channel 2 from next sound file. o -3 = Mix in channel 3 from next sound file. o -4 = Mix in channel 4 from next sound file. o -^ intx inty = Mix in channel x from next sound file as channel y in the output. o -v = Verbose mode. o -R = Continually rewrite the header while writing soundfile (WAV/AIFF). o -H integer = Show a "heart-beat" to indicate progress, in style 1, 2 or 3. o -N = Alert call (usually ringing the bell) when finished. o -o fname = output file name (default: test.wav) EXAMPLES
The default values are mixer -s -otest -F 1.0 -S 0 For example mixer -F 0.96 in1.wav -S 300 -2 in2.aiff -S 300 -^4 1 in3.wav -o out.wav This creates a new sound file with a constant gain of 0.96 from in1.wav with the second channel of in2.aiff mixed in after 300 samples and channel 4 of in3.wav outpout as channel 1 after 300 samples. CREDITS
Author: John ffitch 1994 AUTHORS
Barry Vercoe MIT Media Lab Author. Dan Ellis MIT Media Lab, Cambridge Massachussetts Author. COPYRIGHT
5.10 08/01/2011 MIXER(1)
All times are GMT -4. The time now is 07:36 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy