Sponsored Content
Top Forums Shell Programming and Scripting Compare two csv's with column based Post 302993440 by RudiC on Thursday 9th of March 2017 04:56:48 PM
Old 03-09-2017
Not sure this is the most elegant solution, but the result is as desired. Try
Code:
awk '
NR == FNR       {if (NR == 1)   {print
                                 for (MX=n=NF; n>0; n--) REF[$n]=n
                                }
                 else           TMP[NR] = $0
                 next
                }

FNR == 1        {for (n=NF; n>0; n--) if ($n in REF) CMP[n]=REF[$n]
                 next
                }

                {TSTR = TFS = ""
                 split ("", IT)
                 for (n=NF; n>0; n--)   if (CMP[n]) IT[CMP[n]] = $n
                 for (i=1; i<=MX; i++)  {TSTR = TSTR TFS IT[i]
                                         TFS  = FS
                                        }
                 if (TSTR != TMP[FNR]) print TMP[FNR]
                }


' FS="," file[12]
col_1,col_2,col_3
1,2,4

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

extract csv based on column value

Hi I have a csv file which is below A,5 B,6 C,10 D,7 I want the values who's second column is greater than 7 say C,10 D,7 Help me please... Thanks, Maruth (3 Replies)
Discussion started by: maruthavanan
3 Replies

2. Shell Programming and Scripting

Read CSV column value based on column name

Hi All, I am newbie to Unix I ve got assignment to work in unix can you please help me in this regard There is a sample CSV file "Username", "Password" "John1", "Scot1" "John2", "Scot2" "John3", "Scot3" "John4", "Scot4" If i give the column name as Password and row number as 4 the... (3 Replies)
Discussion started by: JohnGG
3 Replies

3. Shell Programming and Scripting

Compare files column to column based on keys

Here is my situation. I need to compare two tab separated files (diff is not useful since there could be known difference between files). I have found similar posts , but not fully matching.I was thinking of writing a shell script using cut and grep and while loop but after going thru posts it... (2 Replies)
Discussion started by: blackjack101
2 Replies

4. Shell Programming and Scripting

Pick the column value based on another column from .csv file

My scenario is that I need to pick value from third column based on fourth column value, if fourth column value is 1 then first value of third column.Third column (2|3|4|6|1) values are cancatenated. Main imp point, in my .csv file, third column is having price value with comma (1,20,300), it has... (2 Replies)
Discussion started by: Ganesh L
2 Replies

5. Shell Programming and Scripting

Compare based on column value

Hi Experts, I want to compare 2 text files based on their column values text1 is like prd-1234 yes no yes yes prd-2345 no no no yes prd-6475 yes yes yes no and test 2 is prd-1234 no no no yes prd-2345 yes no no no desired out put as follows prd-1234 1 3 prd-235 1 4 basically it shows... (5 Replies)
Discussion started by: tijomonmathew
5 Replies

6. Shell Programming and Scripting

Compare two files based on column

Hi, I have two files roughly 1200 fields in length for each row, sorted on the 2nd field. I need to compare based on that 2nd column between file1 and file2 and print lines that exist in both files into separate files (I can't guarantee that every line in file1 is in file2). Example: File1: ... (1 Reply)
Discussion started by: origon
1 Replies

7. Shell Programming and Scripting

Compare 2 files of csv file and match column data and create a new csv file of them

Hi, I am newbie in shell script. I need your help to solve my problem. Firstly, I have 2 files of csv and i want to compare of the contents then the output will be written in a new csv file. File1: SourceFile,DateTimeOriginal /home/intannf/foto/IMG_0713.JPG,2015:02:17 11:14:07... (8 Replies)
Discussion started by: refrain
8 Replies

8. UNIX for Beginners Questions & Answers

Compare first column from two csv files with greater than or equal, and less than

I have two csv files of different sizes. The output file needs to have file1 contents on top of file2 contents where file2 col1 is >= to file1 col1, and file2 col1(same value) is < file1 col1 (next value). So basically, some file2 rows will be matched to the same file1 row because it is the closet... (7 Replies)
Discussion started by: aachave1
7 Replies

9. Shell Programming and Scripting

Get maximum per column from CSV file, based on date column

Hello everyone, I am using ksh on Solaris 10 and I'm gathering data in a CSV file that looks like this: 20170628-23:25:01,1,0,0,1,1,1,1,55,55,1 20170628-23:30:01,1,0,0,1,1,1,1,56,56,1 20170628-23:35:00,1,0,0,1,1,2,1,57,57,2 20170628-23:40:00,1,0,0,1,1,1,1,58,58,2... (6 Replies)
Discussion started by: ejianu
6 Replies

10. Shell Programming and Scripting

Need awk or Shell script to compare Column-1 of two different CSV files and print if column-1 matche

Example: I have files in below format file 1: zxc,133,joe@example.com cst,222,xyz@example1.com File 2 Contains: hxd hcd jws zxc cst File 1 has 50000 lines and file 2 has around 30000 lines : Expected Output has to be : hxd hcd jws (5 Replies)
Discussion started by: TestPractice
5 Replies
FindRef(3pm)						User Contributed Perl Documentation					      FindRef(3pm)

NAME
Devel::FindRef - where is that reference to my variable hiding? SYNOPSIS
use Devel::FindRef; print Devel::FindRef::track $some_variable; DESCRIPTION
Tracking down reference problems (e.g. you expect some object to be destroyed, but there are still references to it that keep it alive) can be very hard. Fortunately, perl keeps track of all its values, so tracking references "backwards" is usually possible. The "track" function can help track down some of those references back to the variables containing them. For example, for this fragment: package Test; use Devel::FindRef; use Scalar::Util; our $var = "hi "; my $global_my = $var; our %global_hash = (ukukey => $var); our $global_hashref = { ukukey2 => $var }; sub testsub { my $testsub_local = $global_hashref; print Devel::FindRef::track $var; } my $closure = sub { my $closure_var = $_[0]; Scalar::Util::weaken (my $weak_ref = $var); testsub; }; $closure->($var); The output is as follows (or similar to this, in case I forget to update the manpage after some changes): SCALAR(0x7cc888) [refcount 6] is +- referenced by REF(0x8abcc8) [refcount 1], which is | in the lexical '$closure_var' in CODE(0x8abc50) [refcount 4], which is | +- the closure created at tst:18. | +- referenced by REF(0x7d3c58) [refcount 1], which is | | in the lexical '$closure' in CODE(0x7ae530) [refcount 2], which is | | +- the containing scope for CODE(0x8ab430) [refcount 3], which is | | | in the global &Test::testsub. | | +- the main body of the program. | +- in the lexical '&' in CODE(0x7ae530) [refcount 2], which was seen before. +- referenced by REF(0x7cc7c8) [refcount 1], which is | in the lexical '$global_my' in CODE(0x7ae530) [refcount 2], which was seen before. +- in the global $Test::var. +- referenced by REF(0x7cc558) [refcount 1], which is | in the member 'ukukey2' of HASH(0x7ae140) [refcount 2], which is | +- referenced by REF(0x8abad0) [refcount 1], which is | | in the lexical '$testsub_local' in CODE(0x8ab430) [refcount 3], which was seen before. | +- referenced by REF(0x8ab4f0) [refcount 1], which is | in the global $Test::global_hashref. +- referenced by REF(0x7ae518) [refcount 1], which is | in the member 'ukukey' of HASH(0x7d3bb0) [refcount 1], which is | in the global %Test::global_hash. +- referenced by REF(0x7ae2f0) [refcount 1], which is a temporary on the stack. It is a bit convoluted to read, but basically it says that the value stored in $var is referenced by: - the lexical $closure_var(0x8abcc8), which is inside an instantiated closure, which in turn is used quite a bit. - the package-level lexical $global_my. - the global package variable named $Test::var. - the hash element "ukukey2", in the hash in the my variable $testsub_local in the sub "Test::testsub" and also in the hash "$referenced by Test::hash2". - the hash element with key "ukukey" in the hash stored in %Test::hash. - some anonymous mortalised reference on the stack (which is caused by calling "track" with the expression "$var", which creates the reference). And all these account for six reference counts. EXPORTS
None. FUNCTIONS
$string = Devel::FindRef::track $ref[, $depth] Track the perl value pointed to by $ref up to a depth of $depth and return a descriptive string. $ref can point at any perl value, be it anonymous sub, hash, array, scalar etc. This is the function you most often use. @references = Devel::FindRef::find $ref Return arrayrefs that contain [$message, $ref] pairs. The message describes what kind of reference was found and the $ref is the reference itself, which can be omitted if "find" decided to end the search. The returned references are all weak references. The "track" function uses this to find references to the value you are interested in and recurses on the returned references. $ref = Devel::FindRef::ptr2ref $integer Sometimes you know (from debugging output) the address of a perl scalar you are interested in (e.g. "HASH(0x176ff70)"). This function can be used to turn the address into a reference to that scalar. It is quite safe to call on valid addresses, but extremely dangerous to call on invalid ones. # we know that HASH(0x176ff70) exists, so turn it into a hashref: my $ref_to_hash = Devel::FindRef::ptr2ref 0x176ff70; $ref = Devel::FindRef::ref2ptr $reference The opposite of "ptr2ref", above: returns the internal address of the value pointed to by the passed reference. No checks whatsoever will be done, so don't use this. ENVIRONMENT VARIABLES
You can set the environment variable "PERL_DEVEL_FINDREF_DEPTH" to an integer to override the default depth in "track". If a call explicitly specified a depth it is not overridden. AUTHOR
Marc Lehmann <pcg@goof.com>. COPYRIGHT AND LICENSE
Copyright (C) 2007, 2008 by Marc Lehmann. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available. perl v5.14.2 2009-08-30 FindRef(3pm)
All times are GMT -4. The time now is 07:37 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy