Uniq code in sorted order


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Uniq code in sorted order
# 1  
Old 11-19-2012
Uniq code in sorted order

Hi All,
A small question:

I have a file check.txt which looks like below:

Code:
KRPROD2,2012-11-20 08:46:50:408,ODK3325688102
KRPROD2,2012-11-20 08:47:35:289,ODK3325688102
KRPROD2,2012-11-20 08:47:35:446,ODK3325688102
KRPROD2,2012-11-20 08:48:32:973,ODK3325689120
KRPROD2,2012-11-20 09:29:17:833,ODK3325689120
KRPROD2,2012-11-20 09:29:17:912,ODK3325689120

I want to get below output
Code:
KRPROD2,2012-11-20 08:46:50:408,ODK3325688102
KRPROD2,2012-11-20 08:48:32:973,ODK3325689120

which is first instance of field3 in the file. Please help

Last edited by Scrutinizer; 11-20-2012 at 01:19 AM.. Reason: code tags
# 2  
Old 11-19-2012
Code:
awk -F, '!c[$3]++' file

# 3  
Old 11-19-2012
Thanks so much...it works.
Can you please help to explain as i m new bie in unix
# 4  
Old 11-19-2012
Code:
awk -F, '!c[$3]++' file

The -F, sets the field separator to a <comma>.
The c[$3] is an array indexed by the contents of field 3. An unintialized variable in awk has value 0 (or empty string) depending on context).
The first time it is evaluated !c[$3] (NOT)(value of c[$3]), is (NOT)zero which evaluates to TRUE. When the value is TRUE the action associated with this awk statement is performed. Since there is no action given, the default action (print the line) is performed.
Then the ++ increments the value of c[$3] so that when this test is performed again on lines with the same 3rd field, the test !c[$3] will evaluate to FALSE because (NOT)(positive integer value) evaluates to zero. When the test evaluates to FALSE, the action associated with this line is not performed so subsequent lines with the same value in the 3rd field are not printed.
This test is performed once for each line in the file in order from beginning to end.
# 5  
Old 11-19-2012
Thanks for detailed explanation

But when I am using below line/command its giving me error;

Code:
ssh ${fmsServerUserName}@${fmsServerName} "awk -F, '!c[$3]++' 10_FMS_CRXtoFMS.csv" >> 10_FMS_CRXtoFMS.csv

Error:
awk: !c[]++
awk:    ^ syntax error
awk: fatal: invalid subscript expression

Please help

Last edited by Scrutinizer; 11-20-2012 at 01:19 AM.. Reason: code tags
# 6  
Old 11-20-2012
Hi
escape ! and $ chars. it will work.

Code:
ssh ${fmsServerUserName}@${fmsServerName} "awk -F, '\!c[\$3]++' 10_FMS_CRXtoFMS.csv" >> 10_FMS_CRXtoFMS.csv


Last edited by Scrutinizer; 11-20-2012 at 01:21 AM.. Reason: code tags
# 7  
Old 11-20-2012
Quote:
Originally Posted by irfanmemon
Thanks for detailed explanation

But when I am using below line/command its giving me error;

ssh ${fmsServerUserName}@${fmsServerName} "awk -F, '!c[$3]++' 10_FMS_CRXtoFMS.csv" >> 10_FMS_CRXtoFMS.csv

Error:
awk: !c[]++
awk: ^ syntax error
awk: fatal: invalid subscript expression

Please help
By putting the !c[$e]++ in a double quoted string (i.e., "awk -F, '!c[$3]++' 10_FMS_CRXtoFMS.csv"), you had the shell expand $3 instead of awk. Given the error message, it would appear that the shell you were executing when you invoked this command either didn't have three positional parameters or the third positional parameter at that time was an empty string.

Then when you invoked awk, the script that it was given was '!c[]++' and you got the syntax error from awk.

I don't use ssh much, but adding the backslash escape as shown in red in the following should get rid of the syntax error for you:
Code:
ssh ${fmsServerUserName}@${fmsServerName} "awk -F, '!c[\$3]++' 10_FMS_CRXtoFMS.csv" >> 10_FMS_CRXtoFMS.csv

It isn't clear to me whether the two references to 10_FMS_CRXtoFMS.csv are two references to the same file or references to different files with the same name on different servers. If you are appending output to a file that you're using for input, bad things are very likely to happen. Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Matrix to 3 col sorted

Hello experts, I have matrices sorted by position, there are 400k rows, 3000 columns. ID CHR POS M1 M2 M3 M4 M5 ID1 1 1 4.6 2.6 2.1 3.5 4.2 ID2 1 100 3.6 2.9 3.2 2.6 2.5 ID3 1 1000 4.1... (9 Replies)
Discussion started by: senhia83
9 Replies

2. UNIX for Beginners Questions & Answers

How to create a summary file of all files in a directory sorted in reverse alphabetical order.?

I have an interactive script which works terrific at processing a folder of unsorted files into new directories. I am wondering how I could modify my script so that( upon execution) it provides an additional labelled summary file on my desktop that lists all of the files in each directory that... (4 Replies)
Discussion started by: Braveheart
4 Replies

3. Shell Programming and Scripting

Read filenames in sorted order

Hi , My requirement is to scan a directory for file names with LTR.PDF* and send those files via ftp to another server one by one. Now the the problem is file names are like LTR.PDF ,LTR.PDF1 ,LTR.PDF2.....LTR.PDF10..upto 99 and these needs to be sent in sorted order. is there a way to get... (10 Replies)
Discussion started by: nishantrk
10 Replies

4. Shell Programming and Scripting

sort the files based on timestamp and execute sorted files in order

Hi I have a requirement like below I need to sort the files based on the timestamp in the file name and run them in sorted order and then archive all the files which are one day old to temp directory My files looks like this PGABOLTXML1D_201108121235.xml... (1 Reply)
Discussion started by: saidutta123
1 Replies

5. UNIX for Dummies Questions & Answers

Help with printing sorted expression

Hi All, How can I print the sorted results of the following expression in Perl ?? print "$i\t$h{$i}\n"; I tried print (sort ("$i\t$h{$i}")"\n"); and other variations of the same but failed. Can someone suggest how to solve this problem, as I'm tryin print sorted results of my script, which... (11 Replies)
Discussion started by: pawannoel
11 Replies

6. UNIX for Dummies Questions & Answers

numerically sorted filenames

How do you sort filenames: 1 2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 as: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 (6 Replies)
Discussion started by: kenneth.mcbride
6 Replies

7. UNIX for Advanced & Expert Users

Sorted file

Hi Is there any unix shell command or utility to know if the file is sorted or not? Thanks (3 Replies)
Discussion started by: ksailesh
3 Replies

8. Shell Programming and Scripting

executing code on files in the sorted order -help!

Say i have 2 files in the giving format: file1 1 2 3 4 1 2 3 4 1 2 3 4 file2 1 2 3 4 1 2 3 4 1 2 3 4 I have a PERL code (loaned by one of u -i forgot who - thanks!) that extracts the 2nd column from each file and append horizontally to a new file: perl -ane 'push @{$L->}, $F; close... (1 Reply)
Discussion started by: epi8
1 Replies

9. Shell Programming and Scripting

Compare 2 sorted files

Hi all, please give me the commands using which i can compare 2 sorted files and get the difference in third file, indiating where the difference is from either file1 or file2. as: File1 (Original file) GARRY JOHN JULIE SAM --------------- File2 DEV GARRY JOHN JOHNIEE (7 Replies)
Discussion started by: varungupta
7 Replies

10. Shell Programming and Scripting

sorted processes

Hi, I am trying to make a script that creates a list of all active (alive) processes sorted by size and then print this list on screen. Could anyone help me? Thaks a lot (7 Replies)
Discussion started by: pro
7 Replies
Login or Register to Ask a Question