Metode untuk menemukan dua string dalam jarak

1

Saya memiliki koleksi file teks besar.

Saya mencari cara untuk menemukan dua string yang berada di baris yang sama (dalam file yang sama) dalam koleksi di mana jarak karakter antara kedua string tidak lebih besar dari jarak yang saya tentukan.

Misalnya, jika file teks berisi:

The quick brown fox jumps over the lazy dog

dan saya melewati string foxdan overdengan jarak 7 (atau lebih) itu akan mengembalikan baris ini karena 7 adalah jarak antara kata-kata ini.

Saya menjalankan mesin Windows 8.

cahaya
sumber
Jika satu string muncul di akhir baris dan string kedua muncul di awal baris berikutnya, apakah Anda ingin menemukannya juga?
Scott
Tidak, saya tidak butuh itu
lampu-lampu
Pertanyaan ini benar-benar tidak harus ditunda. Kami melarang rekomendasi produk dalam arti "Apa alat terbaik untuk melakukan XYZ ?" jika tidak ada upaya penelitian yang ditunjukkan dan jika jelas bahwa setiap orang akan berpadu dengan pendapat mereka sendiri karena ada puluhan kemungkinan jawaban. Jika semua yang perlu dilakukan adalah menulis ulang pertanyaan dari "Saya mencari alat untuk ..." menjadi "Bagaimana saya ...?", Kemudian menutupnya sepertinya terlalu sulit. Setidaknya suatu upaya dapat dilakukan untuk menulis ulang pertanyaan sebelum memberikan suara untuk menutupnya. (cc @scott)
slhck

Jawaban:

2

Gunakan egrep. Atau opsi grep -e.

egrep -o "fox.{1,7}over" filename.txt

Secara umum:

egrep -o "string1.{1,7}string2" filename.txt

Semua opsi di atas hanya akan mengembalikan bagian yang cocok. Agar baris penuh dapat dikembalikan, jangan gunakan opsi -o. Jadi itu akan menjadi:

egrep "string1.{1,7}string2" filename.txt

Untuk menerapkannya ke semua file dalam folder yang akan Anda gunakan:

egrep "string1.{1,7}string2" *

Semua ini berasumsi bahwa setidaknya ada satu pemisahan karakter.

Rajib
sumber
Akhirnya saya menggunakan Windows Grep, tetapi berhasil.
the-lights
4

Karena Anda menggunakan Windows, gunakan Notepad ++ bersamaan dengan plugin RegEx Helper

Plugin Notepad ++ yang memungkinkan pengguna untuk mengembangkan ekspresi reguler dan mengujinya terhadap dokumen terbuka mereka.

masukkan deskripsi gambar di sini

Jika Anda ingin seluruh baris, gunakan ^.*fox.{0,7}over.*$ bukanfox.{0,7}over

nixda
sumber