linux - what is the meaning of delimiter in cut and why in this command it is sorting twice? -


i trying find reason of command , know basic found that

last | cut -d" " -f 1 | sort | uniq -c | sort 

last = last searches through file /var/log/wtmp (or file designated -f flag) , displays list of users logged in (and out) since file created.

cut show desired column.

the option -d specifies field delimiter used in input file.

-f specifies field want extract

1 out put think not sure

and sorting , is

uniq command helpful remove or detect duplicate entries in file. tutorial explains few used uniq command line options might find helpful.

if can explain command , explain why there 2 sorts appreciate it.

you right on explanation of cut: cut -d" " -f1 (no need of space after f) gets first field of stream based on delimiter " " (space).

then why sort | uniq -c | sort?

from man uniq:

note: 'uniq' not detect repeated lines unless adjacent. may want sort input first, or use 'sort -u' without 'uniq'. also, comparisons honor rules specified 'lc_collate'.

that's why need sort lines before piping uniq. finally, uniq output not sorted, need sort again see repeated items first.


see example of sort , uniq -c given file repeated items:

$ seq 5 >>a $ seq 5 >>a $ cat 1 2 3 4 5 1 2 3 4 5  $ sort | uniq -c | sort <--- no repeated matches       2 1       2 2       2 3       2 4       2 5  $ uniq -c | sort <---- repeated matches       1 1       1 1       1 2       1 2       1 3       1 3       1 4       1 4       1 5       1 5 

note can sort | uniq -c awk:

last | awk '{a[$1]++} end{for (i in a) print i, a[i]}' 

this store in a[] array values of first column , increase counter whenever finds more. in end{} blocks prints results, unsorted, pipe again sort.


Comments

Popular posts from this blog

javascript - Count length of each class -

What design pattern is this code in Javascript? -

hadoop - Restrict secondarynamenode to be installed and run on any other node in the cluster -