Ich habe ein eingebettetes Linux-System mit Busybox (OpenWRT) - daher sind die Befehle begrenzt. Ich habe zwei Dateien, die so aussehen:
erste Datei
aaaaaa
bbbbbb
cccccc
mmmmmm
nnnnnn
zweite Datei
mmmmmm
nnnnnn
yyyyyy
zzzzzz
Ich muss diese 2 Listen in 1 Datei zusammenführen und die Duplikate entfernen. Ich habe nicht diff (Raum begrenzt ist) , so dass wir die großen erhalten zu verwenden awk
, sed
und grep
(oder andere Tools , die in einer Standard - Busybox Instanz enthalten sein könnten). Gehen Sie zu einer Zusammenführungsdatei wie:
command1 > mylist.merge
command2 mylist.merge > originallist
ist total ok Es muss kein einzeiliger Befehl sein.
Derzeit definierte Funktionen in der von mir verwendeten Busybox-Instanz (Standard OpenWRT): [, [[, arping, ash, awk, basename, brctl, bunzip2, bzcat, cat, chgrp, chmod, chown, chroot, clear, cmp, cp, crond, crontab, schnitt, datum, dd, df, dirname, dmesg, du, echo, egrep, env, expr, falsch, fgrep, find, free, fsync, grep, gunzip, gzip, halt, kopf, hexdump, hostid, hwclock, id, ifconfig, init, insmod, kill, killall, klogd, less, ln, sperre, 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, abschalten, printf, ps, pwd, neustarten, zurücksetzen, rm, rmdir, rmmod, route, sed, seq, sh, schlafen, sort, start-stop-daemon, strings, switch_root, sync, sysctl, syslogd, schwanz, teer, tee, telnet, telnetd, test,Zeit, oben, berühren, tr, traceroute, wahr, udhcpc, umount, uname, uniq, Betriebszeit, vconfig, vi, Wachhund, wc, wget, die, xargs, ja, zcat
-u
.In nur einem Befehl ohne Pipe:
Suche
-> http://www.busybox.net/downloads/BusyBox.html
quelle
sort file1 file2 file3 file4 | uniq
odersort -u file1 file2 file3 file4
Eine andere Lösung:
quelle
Verwenden Sie zum Sortieren nach einer Schlüsselspalte Folgendes:
Betrachten Sie hier die erste, zweite und dritte Spalte als Ihren Primärschlüssel.
quelle
Die Dateien auf Ihrer Frage sind sortiert.
Wenn die Quelldateien tatsächlich sortiert sind, können Sie sie in einem Schritt vereinheitlichen und zusammenführen:
Verwenden Sie für die numerische Sortierung (nicht alphanumerisch):
Dies konnte nicht direkt durchgeführt werden (umgeleitet zu einer Quelldatei).
Wenn die Dateien nicht sortiert sind, sortieren Sie sie (diese Sortierung kann mithilfe der Sortieroption durchgeführt werden
-o
. Die gesamte Datei muss jedoch in den Speicher geladen werden):Das wäre schneller als die einfachere "One Command Line", um alle zu sortieren:
Diese Zeile kann jedoch für kleine Dateien nützlich sein.
quelle