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.
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:
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.
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)
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)
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)
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)
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)
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)
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)