Can anyone please assist me?
Condition 1:
if (substr($0,134,1) == "X") , then look for the corresponding matching record(USe Fields - substr($0,2,13),substr($0,136,16),substr($0,114,14)) that has column value 'L' in the same positon and then remove both X and L records.if there are multiple matching L records with the same values in all 3 fields then remove only one L record .
Condition 2:
Incase if there is no corresponding matching record ,then remove only X record.
Condition 3: incase if there are multiple L lines with the same values in all the fields
then we should include all those records in the output file .
Here is a copy of your code with indentation added to make it easier to read and line numbers added for reference in the following notes:
Notes:
Condition 1 says an X records removes one L record. Line 11 deletes all L records for any matching X record.
Condition 4 says final output contains only L records; Lines 7 and 13 print non-L records.
Condition 3 says that if there are multiple identical L records, all of them should be printed. Condition 1 says that if there is an X record, a matching L record is to be removed? These conditions conflict with each other? Which one takes precedence.
Condition 2 is not needed. It restates a subset of the requirements stated by Condition 4.
Is it really necessary to use substr($0, 134, 1) instead of $7?
Is it really necessary to use substr($0, 2, 13) instead of $1?
Is it really necessary to sue substr($0, 136, 16) instead of $8?
Is it really necessary to sue substr($0, 114, 14) instead of $6?
For your given sample data, when the key fields match, the other fields are also identical. Is this always the case? If not, how is your script supposed to decide which one will be deleted when there is an X record with a matching key?
sorry for the confusion .
I'm facing some issues in my code. My current code is not working as expected.
1) Condition 1 says an X records removes one L record. Line 11 deletes all L records for any matching X record.
Ans: My code deletes all matching L records. I need to delete only one L record . I'm not sure how to handle this?
2) Condition 4 says final output contains only L records; Lines 7 and 13 print non-L records.
Ans: I should print only L records . need to fix this part .
3)Condition 3 says that if there are multiple identical L records, all of them should be printed. Condition 1 says that if there is an X record, a matching L record is to be removed? These conditions conflict with each other? Which one takes precedence.
Ans: There will be cases like X records won't be there, but Multiple identical L records will be there in the file. In this case, i have to print all the L records.
4)Condition 2 is not needed. It restates a subset of the requirements stated by Condition 4.
Ans: you are right
5) question 5,6,7,8 - yes, I have to use substr function.
6)For your given sample data, when the key fields match, the other fields are also identical. Is this always the case? If not, how is your script supposed to decide which one will be deleted when there is an X record with a matching key?
Yes, there will be cases like when the key fields match, the other fields are also identical. we can delete any one of the matching record.
if the key fields are not matching, then print all records.
hope this helps . please let me know if you have any other questions.
thanks for looking into my code.
Thanks a lot for your help! The code is working as expected. I have tested almost all the scenarios and its perfectly working fine. I'm still testing the code and let you know incase of any issues.
Hi,
I am trying to pass awk field to a command line executed within awk (need to convert a timestamp into formatted date).
All my attempts failed this far.
Here's an example.
It works fine with timestamp hard-codded into the command
echo "1381653229 something" |awk 'BEGIN{cmd="date -d... (4 Replies)
below is the output xml string from some other command and i will be parsing it using awk
cat /tmp/alerts.xml
<Alert id="10102" name="APP-DS-ds_ha-140018-componentFailure-S" alertDefinitionId="13982" resourceId="11427" ctime="1359453507621" fixed="false" reason="If Event/Log Level(ANY) and... (2 Replies)
Hi,
I have a situation to compare one file, say file1.txt with a set of files in directory.The directory contains more than 100 files.
To be more precise, the requirement is to compare the first field of file1.txt with the first field in all the files in the directory.The files in the... (10 Replies)
Hello all,
Here is what my bash script does: sums number columns, saves the tot in new column, outputs if tot >= threshold val:
> cat getnon0file.sh
#!/bin/bash
this="getnon0file.sh"
USAGE=$this"
InFile="xyz.38"
Min="0.05"
#
awk '{sum=0; for(n=2; n<=NF; n++){sum+=$n};... (4 Replies)
I have a script problem that I am not able to solve due my very limited understanding of unix/awk.
This is the contents of test.sh
awk '{print $1}'
From the prompt if I enter:
./test.sh Hello World
I would expect to see "Hello" but all I get is a blank line. Only then if I enter "Hello... (2 Replies)
Sorry for the duplicate thread this one is similar to the one in
https://www.unix.com/shell-programming-scripting/88132-awk-sed-script-read-values-parameter-files.html#post302255121
Since there were no responses on the parent thread since it got resolved partially i thought to open the new... (4 Replies)
Hi ,
I have a piece of code ...wherein I need to assign the following ...
1) A command line argument to a variable
e.g origCount=ARGV
2) A unix command to a variable
e.g result=`wc -l testFile.txt`
in my awk shell script
When I do this :
print "origCount" origCount --> I get the... (0 Replies)