Bash 提取具有重复最后一个字段的行

Bash 提取具有重复最后一个字段的行,bash,sorting,awk,Bash,Sorting,Awk,基于使用命令生成的列表 find '/patch' -name A* -exec ls -la {} \; 仅获取一个文件名重复出现多次的列表,但我希望显示完整行,而不仅仅是文件名 文件名只考虑文件名而不是完整路径。 范例 基于此文件: -rw-r--r-- 1 root root 34K Jan 9 2014 /usr/share/dia/sheets/AADL.sheet -rw-r--r-- 1 root root 952 Fev 14 07:07 /usr/share/postgr

基于使用命令生成的列表

find '/patch' -name A* -exec ls -la {} \;
仅获取一个文件名重复出现多次的列表,但我希望显示完整行,而不仅仅是文件名

文件名只考虑文件名而不是完整路径。 范例

基于此文件:

-rw-r--r-- 1 root root 34K Jan  9  2014 /usr/share/dia/sheets/AADL.sheet
-rw-r--r-- 1 root root 952 Fev 14 07:07 /usr/share/postgresql/9.3/man/man7/ABORT.7.gz
-rw-r--r-- 1 root root 955 Jul 30  2014 /usr/share/postgresql/9.1/man/man7/ABORT.7.gz
-rw-r--r-- 1 root root 92K Abr 28  2014 /usr/share/gettext/ABOUT-NLS
-rw-r--r-- 1 root root 545 Dez 14  2013 /usr/share/dia/sheets/Automata.sheet
-rw-r--r-- 1 root root 6,7K Dez 21 2012 /usr/share/perl5/Mail/Address.pm
-rw-r--r-- 1 root root 709 Mar  3 09:03 /home/test/Address.pm
-rw-r--r-- 1 root root 709 Mar  3 11:13 /home/test/Automata.sheet
-rw-r--r-- 1 root root 520 Mar  3 11:15 /home/test/t2/Address.pm
我想得到这个结果:

-rw-r--r-- 1 root root 952 Fev 14 07:07 /usr/share/postgresql/9.3/man/man7/ABORT.7.gz
-rw-r--r-- 1 root root 955 Jul 30  2014 /usr/share/postgresql/9.1/man/man7/ABORT.7.gz
-rw-r--r-- 1 root root 6,7K Dez 21 2012 /usr/share/perl5/Mail/Address.pm
-rw-r--r-- 1 root root 709 Mar  3 09:03 /home/test/Address.pm
-rw-r--r-- 1 root root 520 Mar  3 11:15 /home/test/t2/Address.pm
-rw-r--r-- 1 root root 545 Dez 14  2013 /usr/share/dia/sheets/Automata.sheet
-rw-r--r-- 1 root root 709 Mar  3 11:13 /home/test/Automata.sheet
使用此命令

awk -F. '{ n = split($0, a, "/"); print a[n] }' file |sort | uniq -d > filedups
我得到

之后

grep -f filedups file
我得到了预期的结果

我的问题: 使用awk和/或其他命令,是否有一种直接的方法在一行中执行此操作?

awk来拯救

从您的初始文件开始

$ awk '{n=split($NF,a,"/"); k=a[n]; c[k]++; 
        v[k]=k in v?v[k] ORS $0:$0} 
   END {for(k in c) if(c[k]>1) print v[k]}' file

-rw-r--r-- 1 root root 6,7K Dez 21 2012 /usr/share/perl5/Mail/Address.pm
-rw-r--r-- 1 root root 709 Mar  3 09:03 /home/test/Address.pm
-rw-r--r-- 1 root root 520 Mar  3 11:15 /home/test/t2/Address.pm
-rw-r--r-- 1 root root 545 Dez 14  2013 /usr/share/dia/sheets/Automata.sheet
-rw-r--r-- 1 root root 709 Mar  3 11:13 /home/test/Automata.sheet
-rw-r--r-- 1 root root 952 Fev 14 07:07 /usr/share/postgresql/9.3/man/man7/ABORT.7.gz
-rw-r--r-- 1 root root 955 Jul 30  2014 /usr/share/postgresql/9.1/man/man7/ABORT.7.gz
$ awk '{n=split($NF,a,"/"); k=a[n]; c[k]++; 
        v[k]=k in v?v[k] ORS $0:$0} 
   END {for(k in c) if(c[k]>1) print v[k]}' file

-rw-r--r-- 1 root root 6,7K Dez 21 2012 /usr/share/perl5/Mail/Address.pm
-rw-r--r-- 1 root root 709 Mar  3 09:03 /home/test/Address.pm
-rw-r--r-- 1 root root 520 Mar  3 11:15 /home/test/t2/Address.pm
-rw-r--r-- 1 root root 545 Dez 14  2013 /usr/share/dia/sheets/Automata.sheet
-rw-r--r-- 1 root root 709 Mar  3 11:13 /home/test/Automata.sheet
-rw-r--r-- 1 root root 952 Fev 14 07:07 /usr/share/postgresql/9.3/man/man7/ABORT.7.gz
-rw-r--r-- 1 root root 955 Jul 30  2014 /usr/share/postgresql/9.1/man/man7/ABORT.7.gz