I have input file like Input.dat with below content
Here 3 column is the key column and 7th and 9th are the value columns. I want to do some arithematic operations on 7th & 9th column and update that
value to 8th column on matching of 3rd key column.
example : here first two row has same key column(3rd column) (9000100001) so I want to do
((((7th column value + 9th column value)of row 1)+((7th column value + 9th column value)of row 2))/2)
ie (((2+4)+(3+3))/2)=000006 (leading zeros for complete 6 digit number)
so i have to update the first 2 rows(key is 9000100001)of origal Input.dat files 8th column with 000006 value
So final output of above example is as
I have done script for this requirement as below : Final_Count.sh
and output is :
--- Count_output.dat---
---------------- Final_updated.dat --------------
----------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
Here in this script for final updated file I am using static printing like
so here I am printing spaces after column value manually. I want this as dynamic.
In short print all column with as it is(with space) and just update 8th column.
Please can you help me with this ?
Last edited by Don Cragun; 06-09-2016 at 02:46 AM..
Reason: Add CODE and ICODE tags.
This thread was split off from a post added into the middle of a discussion on a completely different topic. Please create a new thread when you want to discuss a new topic.
As has been requested many times before, PLEASE use CODE tags when displaying sample input, sample output, and code segments. Do not depend on forum moderators and administrators to clean up your posts for you (hoping that we will guess correctly on how your data should be formatted.
Your calculations seem to assume that there will always be exactly two lines with a given 3rd field value. Are these pairs of lines always adjacent (as in your sample input and output)? Can there be just one or more than two lines with a given 3rd field value (and, if so, should the division be by 2 or by the number of lines with that 3rd field value)?
Why are you printing ten fields to your output file when there are only nine input fields? This is adding a trailing space to each line of your output file that is not present in the sample output that you say you want???
Does the width of any of your input columns vary, or are the column widths for each column constant for files this script will process?
Your calculations seem to assume that there will always be exactly two lines with a given 3rd field value. Are these pairs of lines always adjacent (as in your sample input and output)? Can there be just one or more than two lines with a given 3rd field value (and, if so, should the division be by 2 or by the number of lines with that 3rd field value)?
Quote:
No there will be not exactly two lines with given 3rd field value. It can 1,2 or 3 . Depending on input data.These pairs of lines will always adjacent(because 3rd key column is sorted).
Why are you printing ten fields to your output file when there are only nine input fields? This is adding a trailing space to each line of your output file that is not present in the sample output that you say you want???
Quote:
This 10th value printed by mistake. You can skip that.
Does the width of any of your input columns vary, or are the column widths for each column constant for files this script will process?
Quote:
the width of columns may change. This is the major issue I am facing here.
If you could give the solution for this to be printed dynamically with updated value of column 8 will be very helpful.
You didn't answer the question about whether the calculations done in your 1st awk script should always divide by 2 or should instead divide by the number of lines containing a given 3rd column value.
And, it is past my bedtime and I have an early morning meeting tomorrow. I have working code (with no temp files and only one awk script) now for fixed width columns and two input lines per 3rd column value. I'll work on adjustments for varying field widths and varying numbers of lines per 3rd column value tomorrow afternoon (assuming you answer the questions above and below before I get up later this morning).
Do you need to print the count_output_fie contents you're producing now, or is that just debug information? You are currently removing both of the files your script is creating at the end of the script. Am I correct in assuming that these are temp files that do not need to be kept when your script exits?
My current script just prints the output produced by your 2nd awk script. Is that sufficient (with the other changes discussed above)?
Here is a new example to explain in detail-
new Input.dat will have content like
Quote:
In above sample input you can see in row 6,7 & 8 the size of column 4 is reduced by 1 digit(ie 11 digit). for columns 1 to 6 the size of 4th column is 12 digits.
Output for above input using my code is
Quote:
But expected output is :
---------- Post updated at 02:12 PM ---------- Previous update was at 02:03 PM ----------
Hi all
I have two files I need to match record from first file and second file on column 1,8 and and output only match records on file1
File1:
020059801803180116130926800002090000800231000245204003160000000002000461OUNCE000000350000100152500BM01007W0000 ... (5 Replies)
I am looking to move matching lines (01 - 07) from File1 and 77 tab the matching string from File2, to File3.txt. I am almost done but
- Currently, script is not printing lines to File3.txt in order.
Thanks a lot.
Any help is appreciated.
Script I am using:
awk 'FNR == NR && ! /^]*$/ {... (9 Replies)
Hi All,
I have a requirement where i need to check if an rsa public key corresponds to a private key and hence return success or failure. Currently i am using the command
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$PUBLICKEY" )
and its solving my purpose. This is in... (1 Reply)
Hello All,
I need to update my .cfg file which is used in the script for almost all runs.
myfile.cfg file:
var=1
var1=1
run=0
script:
#! /bin/sh
. /mydir/myfile.cfg
echo $var"\t" $var1
exit
So, the requirement is that the myfile.cfg should update every time I run the... (10 Replies)
Hi All,
Can anyone help to write the script to check files updation?
i have files as mentioned below. which will be updated some time.
i just want to check the last file is updating the data for last 15 mins or not.
if its not updating i want to print NOT OK. if its updating data i want... (1 Reply)
Hi,
We have recently implemented 'quota' concept for the unix users.
softlimit - 230MB
hardlimit - 250MB
We have applied the quota when few of users are more than the hardlimit,issue is that even though the users cleared the space, still its 'quota' was not updating properly.
For some... (0 Replies)
I have a file (key.dat) that contains two columns:
AA|1234|
BB|567|
CC|8910|
I have another file (extract.dat) that contains some data:
SD|458|John|Smith|
AA|3345|Frank|Williams|
AA|1234|Bill|Garner|
BD|0098|Yu|Lin|
BB|567|Gail|Hansen|
CC|8910|Ken|Nielsen|
I want to compare the... (5 Replies)
Hi All,
I already have gcc complier installed in my machine.
Its version is : gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
I am not sure whethere it's is latest gcc version available. I want to update my gcc version. Can anyone please suggest me what is the latest and stable gcc... (1 Reply)
Hi,
I'm a UNIX newbie .. so forgive me if this question sounds dumb.
:)
Is it possible for Unix to notify a process that a particular directory has been updated? Rather that the process constantly polling the directory ...
Awaiting your replies ..
Thanks,
VJ (6 Replies)