排序或唯一命令 bash
sort or unique command bash
这是一个文件。我想删除补丁名称中的重复
[ppande@server-1 —]$egrep 'Patch[0-9].*.*:' content1
Patch1001 : snmp fixl.org
Patch1002 : dhcp tmp fix
Patch1003 : qemu-img-9.0.58
Patch001 : snmp fixl.org
Patch002 : dhcp installation
Patch003 : qemu
Patch004 : snmp fixl.org
我用的是'sort -u'但是这里补丁的顺序变了。我需要的只是没有重复且顺序保持不变的输出,或者换句话说,如果有重复,则不能显示 second/last 出现。
[ppande@server-1 —]$egrep 'Patch[0-9].*.*:' content1 | sort -u -k3
Patch002 : dhcp installation
Patch1002 : dhcp tmp fix
Patch003 : qemu
Patch1003 : qemu-img-0.0.58
Patch1001 : snmp fixl.org
Patch001 : snmp fixl.org
期望的输出:
Patch1001 : snmp fixl.org
Patch1002 : dhcp tmp fix
Patch1003 : qemu-img-9.0.58
Patch002 : dhcp installation
Patch003 : qemu
您可以在一个 awk 命令中完成。
awk -F ':\s*' '/^Patch[0-9]+\s*:/ && !a[]++' content1
编辑: 因为 oguzismail 在我之前几秒钟添加了相同的解决方案,所以如果你同意的话,现在添加 perl 解决方案。
perl -aF': ' -lne 'print if ! $seen{$F[1]}++' Input_file
能否请您尝试以下。您不需要在此处将多个命令与 awk
一起使用。
awk -F': ' '/Patch[0-9].*.*/ && !a[]++' Input_file
这是一个文件。我想删除补丁名称中的重复
[ppande@server-1 —]$egrep 'Patch[0-9].*.*:' content1
Patch1001 : snmp fixl.org
Patch1002 : dhcp tmp fix
Patch1003 : qemu-img-9.0.58
Patch001 : snmp fixl.org
Patch002 : dhcp installation
Patch003 : qemu
Patch004 : snmp fixl.org
我用的是'sort -u'但是这里补丁的顺序变了。我需要的只是没有重复且顺序保持不变的输出,或者换句话说,如果有重复,则不能显示 second/last 出现。
[ppande@server-1 —]$egrep 'Patch[0-9].*.*:' content1 | sort -u -k3
Patch002 : dhcp installation
Patch1002 : dhcp tmp fix
Patch003 : qemu
Patch1003 : qemu-img-0.0.58
Patch1001 : snmp fixl.org
Patch001 : snmp fixl.org
期望的输出:
Patch1001 : snmp fixl.org
Patch1002 : dhcp tmp fix
Patch1003 : qemu-img-9.0.58
Patch002 : dhcp installation
Patch003 : qemu
您可以在一个 awk 命令中完成。
awk -F ':\s*' '/^Patch[0-9]+\s*:/ && !a[]++' content1
编辑: 因为 oguzismail 在我之前几秒钟添加了相同的解决方案,所以如果你同意的话,现在添加 perl 解决方案。
perl -aF': ' -lne 'print if ! $seen{$F[1]}++' Input_file
能否请您尝试以下。您不需要在此处将多个命令与 awk
一起使用。
awk -F': ' '/Patch[0-9].*.*/ && !a[]++' Input_file