我有一个使用 Busybox (OpenWRT) 的嵌入式 Linux 系统 - 所以命令是有限的。我有两个文件,如下所示:
第一个文件
aaaaaa
bbbbbb
cccccc
mmmmmm
nnnnnn
第二个文件
mmmmmm
nnnnnn
yyyyyy
zzzzzz
我需要将这 2 个列表合并到 1 个文件中,并删除重复项。 我没有 diff (空间有限),因此我们可以使用很棒的awk
、sed
和grep
(或标准 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
答案2
答案3
另一个解决方案:
awk '!a[$0]++' file_1 file_2
答案4
要根据某些关键列进行排序,请使用以下命令:
awk '!duplicate[$1,$2,$3]++' file_1 file_2
这里考虑第一、第二和第三列作为主键。