Sponsored Content
Top Forums Shell Programming and Scripting need to remove duplicates based on key in first column and pattern in last column Post 302449498 by script_op2a on Monday 30th of August 2010 08:10:29 PM
Old 08-30-2010
Hello again,

I ran the script and it does indeed work.

The only thing I don't understand is how it is able to evaluate the fist line of the key as true in order to assign the value to the array.

I added some print statements to show that it does evaluate to true.

Code:
#!/bin/sh
awk '{split($4,a,"_"); if (b[$1]<=a[4]a[5]) {print "true", $1, b[$1];b[$1]=a[4]a[5];c[$1]=$0}}
END{for (i in b) print c[i]}' dups.txt


this is the output of the modified script with the print statements showing that it evaluates to true for each first occurrence of the key value (field #1)

Code:
true 00060011 
true 00060011 20100826010517.txt
true 0624-01 
true 00000010 
true 00000010 20100826010517.txt
00000010 JONES, PAUL ad_sade3_933_20100827_010528.txt
00060011 PAUL BOWSTEIN ad_waq3_921_20100827_010528.txt
0624-01 RUT CORPORATION ad_sade3_10_20100827_010528.txt

Could you or someone explain to me how b[$1]<=a[4]a[5] evaluates to true for the first line?

Is it saying the same as b[00060011]<=20100826010517.txt ?

When it does this in the 1st record, at this point b[$1] has No Value right?
And from what I understand about if statements in awk, they cannot be 0.

Is the value null or an empty string??

Last edited by Scott; 08-31-2010 at 01:44 PM.. Reason: Code tags
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

joining files based on key column

Hi I have to join two files based on 1st column where 4th column of a2.txt=at and take 2nd column of a1.txt and 3rd column of a2.txt and check against source files ,if matches list those source file names. a1.txt a1|20090809|20090810 a2|20090907|20090908 a2.txt a1|d|file1.txt|at... (9 Replies)
Discussion started by: akil
9 Replies

2. Shell Programming and Scripting

How can i delete the duplicates based on one column of a line

I have my data something like this (08/03/2009 22:57:42.414)(:) king aaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbb (08/03/2009 22:57:42.416)(:) John cccccccccccc cccccvssssssssss baaaaa (08/03/2009 22:57:42.417)(:) Michael ddddddd tststststtststts (08/03/2009 22:57:42.425)(:) Ravi... (11 Replies)
Discussion started by: rdhanek
11 Replies

3. UNIX for Dummies Questions & Answers

Remove duplicates based on a column in fixed width file

Hi, How to output the duplicate record to another file. We say the record is duplicate based on a column whose position is from 2 and its length is 11 characters. The file is a fixed width file. ex of Record: DTYU12333567opert tjhi kkklTRG9012 The data in bold is the key on which... (1 Reply)
Discussion started by: Qwerty123
1 Replies

4. Shell Programming and Scripting

Remove duplicates based on the two key columns

Hi All, I needs to fetch unique records based on a keycolumn(ie., first column1) and also I needs to get the records which are having max value on column2 in sorted manner... and duplicates have to store in another output file. Input : Input.txt 1234,0,x 1234,1,y 5678,10,z 9999,10,k... (7 Replies)
Discussion started by: kmsekhar
7 Replies

5. Shell Programming and Scripting

remove duplicates based on single column

Hello, I am new to shell scripting. I have a huge file with multiple columns for example: I have 5 columns below. HWUSI-EAS000_29:1:105 + chr5 76654650 AATTGGAA HHHHG HWUSI-EAS000_29:1:106 + chr5 76654650 AATTGGAA B@HYL HWUSI-EAS000_29:1:108 + ... (4 Replies)
Discussion started by: Diya123
4 Replies

6. Shell Programming and Scripting

Request to check:remove duplicates only in first column

Hi all, I have an input file like this Now I have to remove duplicates only in first column and nothing has to be changed in second and third column. so that output would be Please let me know scripting regarding this (20 Replies)
Discussion started by: manigrover
20 Replies

7. Shell Programming and Scripting

Remove duplicates within row and separate column

Hi all I have following kind of input file ESR1 PA156 leflunomide PA450192 leflunomide CHST3 PA26503 docetaxel Pa4586; thalidomide Pa34958; decetaxel docetaxel docetaxel I want to remove duplicates and I want to separate anything before and after PAxxxx entry into columns or... (1 Reply)
Discussion started by: manigrover
1 Replies

8. Shell Programming and Scripting

Remove Duplicates on multiple Key Columns and get the Latest Record from Date/Time Column

Hi Experts , we have a CDC file where we need to get the latest record of the Key columns Key Columns will be CDC_FLAG and SRC_PMTN_I and fetch the latest record from the CDC_PRCS_TS Can we do it with a single awk command. Please help.... (3 Replies)
Discussion started by: vijaykodukula
3 Replies

9. Shell Programming and Scripting

Remove duplicates according to their frequency in column

Hi all, I have huge a tab-delimited file with the following format and I want to remove the duplicates according to their frequency based on Column2 and Column3. Column1 Column2 Column3 Column4 Column5 Column6 Column7 1 user1 access1 word word 3 2 2 user2 access2 ... (10 Replies)
Discussion started by: corfuitl
10 Replies
ISSET(3)								 1								  ISSET(3)

isset - Determine if a variable is set and is not NULL

SYNOPSIS
bool isset (mixed $var, [mixed $...]) DESCRIPTION
Determine if a variable is set and is not NULL. If a variable has been unset with unset(3), it will no longer be set. isset(3) will return FALSE if testing a variable that has been set to NULL. Also note that a null character ( "") is not equivalent to the PHP NULL constant. If multiple parameters are supplied then isset(3) will return TRUE only if all of the parameters are set. Evaluation goes from left to right and stops as soon as an unset variable is encountered. PARAMETERS
o $var - The variable to be checked. o $... - Another variable ... RETURN VALUES
Returns TRUE if $var exists and has value other than NULL, FALSE otherwise. CHANGELOG
+--------+---------------------------------------------------+ |Version | | | | | | | Description | | | | +--------+---------------------------------------------------+ | 5.4.0 | | | | | | | Checking non-numeric offsets of strings now | | | returns FALSE. | | | | +--------+---------------------------------------------------+ EXAMPLES
Example #1 isset(3) Examples <?php $var = ''; // This will evaluate to TRUE so the text will be printed. if (isset($var)) { echo "This var is set so I will print."; } // In the next examples we'll use var_dump to output // the return value of isset(). $a = "test"; $b = "anothertest"; var_dump(isset($a)); // TRUE var_dump(isset($a, $b)); // TRUE unset ($a); var_dump(isset($a)); // FALSE var_dump(isset($a, $b)); // FALSE $foo = NULL; var_dump(isset($foo)); // FALSE ?> This also work for elements in arrays: <?php $a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple')); var_dump(isset($a['test'])); // TRUE var_dump(isset($a['foo'])); // FALSE var_dump(isset($a['hello'])); // FALSE // The key 'hello' equals NULL so is considered unset // If you want to check for NULL key values then try: var_dump(array_key_exists('hello', $a)); // TRUE // Checking deeper array values var_dump(isset($a['pie']['a'])); // TRUE var_dump(isset($a['pie']['b'])); // FALSE var_dump(isset($a['cake']['a']['b'])); // FALSE ?> Example #2 isset(3) on String Offsets PHP 5.4 changes how isset(3) behaves when passed string offsets. <?php $expected_array_got_string = 'somestring'; var_dump(isset($expected_array_got_string['some_key'])); var_dump(isset($expected_array_got_string[0])); var_dump(isset($expected_array_got_string['0'])); var_dump(isset($expected_array_got_string[0.5])); var_dump(isset($expected_array_got_string['0.5'])); var_dump(isset($expected_array_got_string['0 Mostel'])); ?> Output of the above example in PHP 5.3: bool(true) bool(true) bool(true) bool(true) bool(true) bool(true) Output of the above example in PHP 5.4: bool(false) bool(true) bool(true) bool(true) bool(false) bool(false) NOTES
Warning isset(3) only works with variables as passing anything else will result in a parse error. For checking if constants are set use the defined(3) function. Note Because this is a language construct and not a function, it cannot be called using variable functions. Note When using isset(3) on inaccessible object properties, the __isset() overloading method will be called, if declared. SEE ALSO
empty(3), __isset(), unset(3), defined(3), the type comparison tables, array_key_exists(3), is_null(3), the error control @ operator. PHP Documentation Group ISSET(3)
All times are GMT -4. The time now is 05:57 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy