awk to get lowest & store value from another file...


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk to get lowest & store value from another file...
# 1  
Old 08-30-2015
awk to get lowest & store value from another file...

I have two files. One small stores and one with large stores like below...

Small-stores.txt
Code:
Store	Code	Excess Stock
K76	23812	17
K50	23812	6
K16	23812	4
K22	23812	3
K69	23812	3
K76	23813	10
K50	23813	7
K16	23813	6
K69	23813	4
K22	23813	3
K69	23814	10
K76	23814	6
K16	23814	4
K50	23814	4
K22	23814	3
K76	30002	4
K16	30002	2
K69	30002	2
K22	30002	1

Large-stores.txt
Code:
Store	Code	Excess Stock
K15	23812	4
K47	23812	4
K48	23812	13
K53	23812	3
k03	23812	2
K17	23813	19
k03	23813	7
K46	23813	7
K78	23813	17
K24	23813	4
K30	23814	6
K60	23814	6
k90	23814	5
K17	23814	4
K44	23814	4
K26	30002	2
k03	30002	-5
K05	30002	-6
K09	30002	-5
K13	30002	-2
K14	30002	-2
K15	30002	20
K71	30002	-1
K78	30002	-1
K87	30002	-3
k90	30002	-1

what i want to do is that, i want to transfer the excess stocks i have from small stores to large stores.

expected output...
Code:
Store	Code	Excess	Transfer-To Transfer-qty
K76	23812	17	k03	8
K50	23812	6	k53	6
K16	23812	4	k47	4
K22	23812	3	k15	3
K69	23812	3	null	null
K76	23813	10	k24	6
K50	23813	7	k03	3
K16	23813	6	k46	3
K69	23813	4	null	null
K22	23813	3	null	null
K69	23814	10	k44	6
K76	23814	6	k17	6
K16	23814	4	k90	4
K50	23814	4	k60	4
K22	23814	3	k30	3
K76	30002	4	k90	4
K16	30002	2	k87	2
K69	30002	2	k78	2
K22	30002	1	k71	1

To make it clear...
1. I want to get the biggest excess stock from small-stores.txt file and transfer it to smallest excess stocks in large-store.txt file. I can go up to positive 10 in excess stock in large-stores.txt file and minimize the excess stocks in small-stores.txt file to zero.
# 2  
Old 08-30-2015
Hi, give this a try:

Code:
awk '
  {
    while((p || B[2]<$2 || B[3]>10) && (getline n<f)>0) {
      split(n,B)
      p=0
    }
    t=q="null"
    if(B[2]==$2 && B[3]<10) {
      t=B[1]
      q=(10-B[3]<$3 ? 10-B[3] : $3)
      p=1
    } 
    print $0, t, q
  }
' OFS='\t' f=<(sort -k2,2n -k3n  Small-stores.txt) <(sort -k2,2 -k3rn Large-stores.txt)

---
This is using process substitution in bash/ksh93/zsh. If the files are already in the proper sorted order, you can just use:
Code:
' OFS='\t' f=Small-stores.txt Large-stores.txt


Last edited by Scrutinizer; 08-30-2015 at 08:17 AM..
This User Gave Thanks to Scrutinizer For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to look up values in File 2 from File 1, & printingNth field of File1 based value of File2 $2

I have two files which are the output of a multiple choice vocab test (60 separate questions) from 104 people (there are some missing responses) and the question list. I have the item list in one file (File1) Item,Stimulus,Choice1,Choice2,Choice3,Choice4,Correct... (5 Replies)
Discussion started by: samonl
5 Replies

2. UNIX for Dummies Questions & Answers

Awk, highest and lowest value of a column

Hi again! I am still impressed how fast I get a solution for my topic "average specific column value awk" yesterday. The associative arrays in awk work fine for me! But now I have another question for the same project. Now I have a list like this 1 -0.1 1 0 1 0.1 2 0 2 0.2 2 -0.2 How... (10 Replies)
Discussion started by: bjoern456
10 Replies

3. Shell Programming and Scripting

ksh program that finds the lowest number in a .txt file

i am having a problem finding the lowest number after punching in a bunch of numbers in the .txt file but its probably the way i have the code set up. help please! (4 Replies)
Discussion started by: tinsteer
4 Replies

4. Shell Programming and Scripting

copying file information using awk & grep

Hi, TASK 1: I have been using this code to print the information of files kept at "/castor/cern.ch/user/s/sudha/forPooja" in some text file name FILE.txt. rfdir /castor/cern.ch/user/s/sudha/forPooja | grep data | awk '{print "rfio:///castor/cern.ch/user/s/sudha/forPooja/"$9}' > FILE.txt ... (6 Replies)
Discussion started by: nrjrasaxena
6 Replies

5. Shell Programming and Scripting

Parse text file in shell & store to variable

Hi, I need to parse a simple text file like below and store the word that starts with BR* to a variable say $BRno. I need to do this in sh script. NOTE: the length of the numbers following BR is in constant. And there is only 1 BRXXX in a file at a given time. .txt file: BR276828... (1 Reply)
Discussion started by: script2010
1 Replies

6. Shell Programming and Scripting

SED/AWK file read & manipulation

I have large number of data files, close to 300 files, lets say all files are same kind and have extension .dat , each file have mulitple lines in it. There is a unique line in each file containing string 'SERVER'. Right after this line there is another line which contain a string 'DIGIT=0',... (4 Replies)
Discussion started by: sal_tx
4 Replies

7. Shell Programming and Scripting

Korn Shell - Finding lowest number of a file.

I'm writing a KSH script that will get a file on the command line (such as input.txt), and in this file there is on number per line. The program needs to take the file, read each and determine the lowest number in the file. I currently have a while loop setup that will correctly out put every... (8 Replies)
Discussion started by: denyal
8 Replies

8. Shell Programming and Scripting

Getting all the files modified today & store the names in a variable as , separated

Hi all, I have a question. I have a folder. I want to find the list of files that are modified today and store all those file names in a variable as comma separated values. I thought of using "find . -mtime 0" command to find the list of files modified today. Also to get those values of file... (10 Replies)
Discussion started by: ananthi_ku
10 Replies

9. UNIX for Dummies Questions & Answers

Finding the lowest sequenced file in a directory?

Hello, I have three files in a directory: 1_700_123456.lst 1_701_123456.lst 1_702_123456.lst I am trying to use a command via ksh that will list the file that has the lowest number in the second node and put that to a file. In the example above, it would put 1_700_123456.lst... (2 Replies)
Discussion started by: stky13
2 Replies

10. Shell Programming and Scripting

sed & awk--get section of file based 2 params

I need to get a section of a file based on 2 params. I want the part of the file between param 1 & 2. I have tried a bunch of ways and just can't seem to get it right. Can someone please help me out.....its much appreciated. Here is what I have found that looks like what I want....but doesn't... (12 Replies)
Discussion started by: Andy Cook
12 Replies
Login or Register to Ask a Question