중복 항목을 제거하면서 두 목록을 병합합니다.

중복 항목을 제거하면서 두 목록을 병합합니다.

Busybox(OpenWRT)를 사용하는 임베디드 Linux 시스템이 있으므로 명령이 제한됩니다. 아래와 같이 두 개의 파일이 있습니다.

첫 번째 파일

aaaaaa
bbbbbb
cccccc
mmmmmm
nnnnnn

두 번째 파일

mmmmmm
nnnnnn
yyyyyy
zzzzzz

이 2개의 목록을 1개의 파일로 병합하고 중복 항목을 제거해야 합니다. 차이점이 없으므로(공간이 제한되어 있음) awesome awk, sedgrep(또는 표준 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, 날짜, dd, df, dirname, dmesg, du, echo, egrep, env, expr, false, fgrep, find, free, fsync, grep, gunzip, gzip, 정지, head, hexdump, 호스트 ID , 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,ivot_root, pkill, poweroff, printf, ps, pwd, 재시작, 재설정, rm, rmdir, rmmod, 라우팅, sed, seq, sh, sleep , sort , 시작-중지 데몬, string, switch_root, sync, sysctl, syslogd, tail, tar, tee, telnet, telnetd, test, time, top, touch, tr, Traceroute, true, udhcpc, umount, uname, uniq, uptime, vconfig, vi, watchdog, 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

여기서 첫 번째, 두 번째 및 세 번째 열은 기본 키로 간주됩니다.

관련 정보