Saya mencari untuk menemukan dan mengganti dalam database dump raksasa, dan itu tidak melakukan apa yang saya pikir harus terjadi. Saya ingin mengambil string target saya di file, dan kemudian melihat sekitar 8 karakter atau lebih (saya mungkin perlu menyesuaikan nomor itu, tergantung). Bagaimana saya bisa melakukan itu?
Alasan saya tidak bisa melihat ini karena ada banyak ratusan, jika tidak ribuan pertandingan. Saya ingin mendapatkan beberapa karakter di sekitar string, dan kemudian memasukkannya ke dalam uniq
atau sesuatu untuk melihat mengapa penemuan dan penggantian saya memiliki perilaku yang tidak terduga.
Juga, mungkin ada beberapa pertandingan di baris yang sama!
text-processing
grep
string
pengguna394
sumber
sumber
Jawaban:
Cara kasar menggunakan
grep
sesuatu akan sepertiJumlah titik sesuai dengan jumlah karakter sebelum / setelah teks yang dipahami. The
-o
pilihan membuatgrep
keluaran hanya pertandingan, tidak seluruh jalur.Untuk digunakan
uniq
pada output, ingat Anda harus mengurutkan output terlebih dahulu. Jadi biasanya, Anda akan melakukannyaJika Anda tertarik dengan hitcount untuk setiap pertandingan, Anda bisa mendapatkan hasil yang bagus dengan menggunakan
sumber
grep -o '.\{8\}yourtext.\{8\}'
. Ini sedikit kurang memusingkan daripada menghitung 8 titik.Mulai dari jawaban @rozcietrzewiacz, saya dapat memperluas ke
sumber
-o
hanya memberikan pertandingan pertama ketika dua pertandingan tumpang tindih:echo 'aaabbbccc' | grep -o 'bb