Eliminate partially duplicate lines by column and keep the last one

后端 未结 4 1647
清歌不尽
清歌不尽 2020-12-08 20:30

I have a file that looks like this:

2011-03-21 name001 line1
2011-03-21 name002 line2
2011-03-21 name003 line3
2011-03-22 name002 line4
2011-03-22 name001 li         


        
相关标签:
4条回答
  • 2020-12-08 20:31
    sort < bar > foo
    uniq  < foo > bar
    

    bar now has no duplicated lines

    0 讨论(0)
  • 2020-12-08 20:41

    EDIT: Here's a version that actually answers the question.

    sort -k 2 filename | while read f1 f2 f3; do if [ ! "$f2" = "$lf2" ]; then echo "$f1 $f2 $f3"; lf2="$f2"; fi; done
    
    0 讨论(0)
  • 2020-12-08 20:44

    This code get uniq lines by second field but from the end of file or text (like in your result example)

    tac temp.txt | sort -k2,2 -r -u
    
    0 讨论(0)
  • 2020-12-08 20:50
    awk '{a[$2]=$0} END {for (i in a) print a[i]}' file
    

    If order of appearance is important:

    • Based on first appearance:

      awk '!a[$2] {b[++i]=$2} {a[$2]=$0} END {for (i in b) print a[b[i]]}' file
      
    • Based on last appearance:

      tac file | awk '!a[$2] {b[++i]=$2} {a[$2]=$0} END {for (i in b) print a[b[i]]}'
      
    0 讨论(0)
提交回复
热议问题