合并两个列表,同时删除重复项

合并两个列表,同时删除重复项

我有一个使用 Busybox (OpenWRT) 的嵌入式 Linux 系统 - 所以命令是有限的。我有两个文件,如下所示:

第一个文件

aaaaaa
bbbbbb
cccccc
mmmmmm
nnnnnn

第二个文件

mmmmmm
nnnnnn
yyyyyy
zzzzzz

我需要将这 2 个列表合并到 1 个文件中,并删除重复项。 我没有 diff (空间有限),因此我们可以使用很棒的awksedgrep(或标准 Busybox 实例中可能包含的其他工具)。转到合并文件,例如:

command1 > mylist.merge 
command2 mylist.merge > originallist

完全没问题。它不一定是单行命令。

当前在我使用的 Busybox 实例中定义的函数(默认 OpenWRT): [、[[、arping、ash、awk、basename、brctl、bunzip2、bzcat、cat、chgrp、chmod、chown、chroot、clear、cmp、 cp、crond、crontab、cut、date、dd、df、dirname、dmesg、du、echo、egrep、env、expr、false、fgrep、find、free、fsync、grep、gunzip、gzip、halt、head、hexdump、 hostid、hwclock、id、ifconfig、init、insmod、kill、killall、klogd、less、ln、lock、logger、logread、ls、lsmod、md5sum、mkdir、mkfifo、mknod、mktemp、mount、mv、nc、netmsg、 netstat、nice、nslookup、ntpd、passwd、pgrep、pidof、ping、ping6、pivot_root、pkill、poweroff、printf、ps、pwd、重新启动、重置、rm、rmdir、rmmod、路由、sed、seq、sh、睡眠、排序、启动-停止守护进程、字符串、switch_root、同步、sysctl、syslogd、tail、tar、tee、telnet、telnetd、测试、时间、顶部、触摸、tr、traceroute、true、udhcpc、umount、uname、uniq、正常运行时间、vconfig、vi、看门狗、wc、wget、which、xargs、是、zcat

答案1

我认为

sort file1 file2 | uniq
aaaaaa
bbbbbb
cccccc
mmmmmm
nnnnnn
yyyyyy
zzzzzz

会做你想做的事。

附加文档:独特的 种类

答案2

只需一个命令,无需任何管道:

sort -u FILE1 FILE2

搜索

抑制重复行

->http://www.busybox.net/downloads/BusyBox.html

答案3

另一个解决方案:

awk '!a[$0]++' file_1 file_2

答案4

要根据某些关键列进行排序,请使用以下命令:

awk '!duplicate[$1,$2,$3]++' file_1 file_2

这里考虑第一、第二和第三列作为主键。

相关内容