排序或唯一命令重击

时间:2018-12-16 06:00:54

标签: bash sorting uniq

这是一个文件。我想删除补丁名称中的重复

[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',但是补丁的顺序在这里改变了。我需要的是没有重复且顺序保持不变的输出,或者换句话说,如果有重复,则不得显示第二次/最后一次出现。

[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

2 个答案:

答案 0 :(得分:1)

您可以在单个awk命令中执行该操作。

awk -F ':\\s*' '/^Patch[0-9]+\s*:/ && !a[$2]++' content1

答案 1 :(得分:1)

编辑: :由于oguzismail在我之前添加了相同的解决方案几秒钟,因此,如果可以,请立即添加perl解决方案。

keybd_event VK_Alt, 0, 0, 0
keybd_event VK_A, 0, 0, 0
keybd_event VK_A, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_Alt, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_C, 0, 0, 0
keybd_event VK_C, 0, KEYEVENTF_KEYUP, 0

Worksheets(1).Rows(9 & ":" & Worksheets(1).Rows.Count).Delete


能否请您尝试以下。您无需在此处与perl -aF': ' -lne 'print if ! $seen{$F[1]}++' Input_file 一起使用多个命令。

awk