Saya punya daftar dengan 250 baris di dalamnya. Saya harus menjalankan semuanya melalui server web untuk mendapatkan daftar output. Namun daftar ini menghasilkan lebih banyak baris, daripada yang saya minati. Katakanlah, saya list.txt
adalah:
a.1
b.1
etc
maka outputnya adalah output.txt
:
a.1 a b c
a.2 b a b
a.3 d k o
b.1 b o p
b.2 o i y
b.3 p i y
etc
Apakah mungkin menggunakan perintah grep untuk mencari semua kata di list.txt di output.txt dan kemudian menghasilkan daftar "yang diinginkan" ingin.txt? Saya membutuhkan seluruh baris di output.txt saya, saya baru dalam skrip, tapi apa yang saya suka adalah sesuatu seperti
grep list.txt output.txt > wanted.txt
Saya belum dapat menemukan contohnya
Jawaban:
Saya akan mengabaikan yang
grep
ini. Ini bagus untuk ekspresi reguler tetapi sepertinya Anda tidak benar-benar membutuhkannya di sini.comm
dapat membandingkan dua file dan menunjukkan persimpangan. Menggunakan contoh persis Anda:Ini lebih cepat daripada grep apa pun tetapi bergantung (berat) pada file yang sedang disortir. Jika tidak, Anda dapat melakukan pre-sortir tetapi itu akan mengubah output sehingga diurutkan juga.
Atau, jawaban dari iiSeymour ini akan membuat Anda melakukannya
grep
. Bendera meminta file input dan memaksa pencarian kata lengkap dengan string tetap. Ini tidak akan bergantung pada pesanan tetapi akan didasarkan padaoutput.txt
pesanan. Balikkan file jika Anda menginginkannya dalam urutan list.txt.Jika Anda
list.txt
adalah benar-benar besar, Anda mungkin harus mengatasi ini sedikit lebih iteratif dan lulus setiap baris grep secara terpisah. Ini akan secara besar-besaran meningkatkan waktu pemrosesan. Di atas Anda akan membacaoutput.txt
sekali, tetapi dengan cara ini Anda akan membaca dan memprosesnya untuk setiap baris list.txt. Mengerikan ... Tapi mungkin itu satu-satunya pilihanmu. Pada sisi positifnya, ia kemudian menyortir berdasarkanlist.txt
pesanan.sumber
-1
menekan baris unik ke file pertama,-2
menekan baris unik untuk file kedua, dan-3
menekan baris yang sama untuk keduanya. Untuk mendapatkan garis yang sama, kami menekan yang unik, karenanya-12
.