Busybox (OpenWRT)를 사용하는 임베디드 Linux 시스템이 있으므로 명령이 제한됩니다. 다음과 같은 두 개의 파일이 있습니다.
첫 번째 파일
aaaaaa
bbbbbb
cccccc
mmmmmm
nnnnnn
두 번째 파일
mmmmmm
nnnnnn
yyyyyy
zzzzzz
이 두 목록을 하나의 파일로 병합하고 중복을 제거해야합니다. 나는 (공간 제한) 우리는 위대한를 사용하여 얻을 수 있도록 DIFF가없는 awk
, sed
및 grep
(또는 표준 비지 박스 인스턴스에 포함 할 수있는 다른 도구). 다음과 같은 병합 파일로 이동 :
command1 > mylist.merge
command2 mylist.merge > originallist
완전히 괜찮습니다. 한 줄 명령 일 필요는 없습니다.
현재 사용중인 Busybox 인스턴스에서 현재 정의 된 기능 (기본 OpenWRT) : [, [[, arping, ash, awk, basename, brctl, bunzip2, bzcat, cat, chgrp, chmod, chown, chroot, clear, cmp, cp, 크론, crontab, 컷, 날짜, dd, df, dirname, dmesg, du, echo, egrep, env, expr, false, fgrep, find, free, fsync, grep, gunzip, gzip, 정지, 헤드, 16 진 덤프, 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, 수면, 정렬, 시작-중지-데몬, 문자열, switch_root, 동기화, sysctl, syslogd, 꼬리, 타르, 티, 텔넷, 텔넷, 테스트,시간, 상단, 접촉, tr, 추적 경로, 참, udhcpc, umount, uname, uniq, 가동 시간, vconfig, vi, 감시 장치, 화장실, wget, 어느, xargs, 예, zcat
답변
나는 생각한다
sort file1 file2 | uniq
aaaaaa
bbbbbb
cccccc
mmmmmm
nnnnnn
yyyyyy
zzzzzz
당신이 원하는 것을 할 것입니다.
답변
답변
다른 해결책 :
awk '!a[$0]++' file_1 file_2
답변
일부 키 열에 따라 정렬하려면 다음을 사용하십시오.
awk '!duplicate[$1,$2,$3]++' file_1 file_2
여기서 첫 번째, 두 번째 및 세 번째 열을 기본 키로 고려하십시오.
답변
질문의 파일이 정렬됩니다.
소스 파일이 실제로 정렬 된 경우 한 단계로 통합하여 병합 할 수 있습니다.
sort -um file1 file2 > mylist.merge
영숫자가 아닌 숫자 정렬의 경우 다음을 사용하십시오.
sort -num file1 file2 > mylist.merge
그건 못해 자리에서 수행 (하나의 소스 파일로 리디렉션).
파일이 정렬되지 않은 경우 파일을 정렬하십시오 (이 정렬은 sort 옵션을 사용하여 제자리에서 수행 할 수 있습니다 -o
. 그러나 전체 파일을 메모리에로드해야합니다).
sort -uo file1 file1
sort -uo file2 file2
sort -um file1 file2 > mylist.merge
mv mylist.merge originallist
모든 것을 정렬하는 간단한 “하나의 명령 줄”보다 빠릅니다.
cat file1 file2 | sort -u >mylist.merge
그러나이 줄은 작은 파일에 유용 할 수 있습니다.