Saya memiliki sistem linux tertanam menggunakan Busybox (OpenWRT) - jadi perintah terbatas. Saya memiliki dua file yang terlihat seperti:
file pertama
aaaaaa
bbbbbb
cccccc
mmmmmm
nnnnnn
file kedua
mmmmmm
nnnnnn
yyyyyy
zzzzzz
Saya perlu menggabungkan 2 daftar ini menjadi 1 file, dan menghapus duplikatnya. Saya tidak memiliki diff (ruang terbatas) sehingga kami bisa menggunakan besar awk
, sed
dan grep
(atau alat-alat lain yang mungkin termasuk dalam contoh Busybox standar). Pergi ke file gabungan seperti:
command1 > mylist.merge
command2 mylist.merge > originallist
benar-benar baik-baik saja. Itu tidak harus menjadi perintah baris tunggal.
Fungsi yang saat ini didefinisikan dalam instance Busybox yang saya gunakan (default OpenWRT): [, [[, arping, ash, awk, nama kecil, brctl, bunzip2, bzcat, cat, chgrp, chmod, chown, chroot, clear, cmp, cp, crond, crontab, potong, tanggal, dd, df, dirname, dmesg, du, gema, egrep, env, expr, false, fgrep, cari, gratis, fsync, grep, gunzip, gzip, berhenti, kepala, 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, bagus, nslookup, ntpd, passwd, pgrep, pidof, ping, ping6, pivot_root, pkill, poweroff, printf, ps, pwd, reboot, reset, rm, rmdir, rmmod, rute, sed, seq, sh, sleep, sortir, start-stop-daemon, string, switch_root, sinkronisasi, sysctl, syslogd, tail, tar, tee, telnet, telnetd, tes,waktu, atas, sentuh, tr, traceroute, true, udhcpc, umount, uname, uniq, uptime, vconfig, vi, pengawas, wc, wget, yang, xargs, ya, zcat
-u
.Hanya dalam satu perintah tanpa pipa:
Cari
-> http://www.busybox.net/downloads/BusyBox.html
sumber
sort file1 file2 file3 file4 | uniq
atausort -u file1 file2 file3 file4
Solusi lain:
sumber
Untuk mengurutkan berdasarkan beberapa kolom utama gunakan berikut ini:
di sini pertimbangkan kolom pertama, kedua dan ketiga sebagai kunci utama Anda.
sumber
File pada pertanyaan Anda diurutkan.
Jika file sumber benar-benar diurutkan, Anda dapat menyatukan dan menggabungkan dalam satu langkah:
Untuk pengurutan angka (bukan alfanumerik), gunakan:
Itu tidak dapat dilakukan di tempat (dialihkan ke satu file sumber).
Jika file tidak diurutkan, sortirlah (sortir ini dapat dilakukan di tempat, menggunakan opsi sortir
-o
. Namun, keseluruhan file perlu dimuat ke dalam memori):Itu akan lebih cepat daripada "satu baris perintah" yang lebih sederhana untuk mengurutkan semua:
Namun, baris ini bisa berguna untuk file kecil.
sumber