Bash

合併兩個列表,同時刪除重複項

  • September 10, 2021

我有一個使用 Busybox (OpenWRT) 的嵌入式 linux 系統 - 所以命令是有限的。我有兩個看起來像的文件:

第一個文件

aaaaaa
bbbbbb
cccccc
mmmmmm
nnnnnn

第二個文件

mmmmmm
nnnnnn
yyyyyy
zzzzzz

我需要將這 2 個列表合併到 1 個文件中,並刪除重複項。 我沒有 diff(空間有限),所以我們可以使用很棒的awk, sed, and 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, reboot, reset, rm, rmdir, rmmod, route, sed, seq, sh, sleep,排序,啟動-停止-守護程序,字元串,switch_root,同步,sysctl,syslogd,tail,tar,tee,telnet,telnetd,測試,time, top, touch, tr, traceroute, true, udhcpc, umount, uname, uniq, uptime, vconfig, vi, watchdog, wc, wget, which, xargs, yes, zcat

我想

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

會做你想做的。

附加文件:uniq 排序

在一個沒有任何管道的命令中:

sort -u FILE1 FILE2

搜尋

禁止重複行

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

引用自:https://unix.stackexchange.com/questions/50103