Untuk menerima 20 karakter setelah dan sebelum pertandingan


14

Saya memiliki masalah sehingga saya mendapatkan terlalu banyak informasi setelah pertandingan

grep -RnisI --color=auto "pseudomonas" *

Saya hanya ingin mendapatkan 20 karakter atau 10 kata setelah dan sebelum pertandingan.

Apa alat yang tepat untuk melakukan hal seperti itu?


1
Set pilihan Anda agak aneh ketika mengeluh tentang terlalu banyak informasi. Anda ingin satu baris setelah dan sebelum pertandingan Anda ditampilkan ( -A1dan -B1resp.), Tetapi terlalu banyak? Di mana tepatnya Anda ingin output Anda dipangkas?
Andreas Wiese

1
Bisakah Anda memberikan contoh input dan output yang Anda harapkan?
Ramesh

Saya telah mengubah perintah, saya uji di Ubuntu 13.10, beri tahu saya jika itu berhasil untuk Anda. Saya punya opsi grep dan opsi egrep
Eric

Jawaban:


23
cat file.txt | grep -o -P '.{0,20}string.{0,20}'

Ini harus dilakukan untuk Anda

Memperbarui:

Jika Anda tidak ingin menggunakan cat, Anda bisa menggunakan grep dengan file sebagai parameter:

grep -o -P '.{0,20}pseudomonas.{0,20}' FileName.html

Juga, -P menggunakan Perl Regex, yang dikatakan halaman manual itu eksperimental, jika Anda ingin menghindari tanda itu, Anda bisa menggunakan egrep sebagai gantinya:

grep -Eo '.{0,20}yourstring.{0,20}' yourtestfile.txt

File tes jelek yang kamu miliki;)
Ouki

Sisa file sebenarnya sangat berguna, yaitu bagian dari komentar multi-baris di tengah Skema yang harus dikecualikan tanpa merusak parser kami, itu hanya baris yang bagus untuk mencobanya.
Eric

Karena ini salah satu file saya, disetel ke 755, tetapi saya bisa melihat bagaimana cat mungkin tidak ideal untuk file HTML, Anda dapat mencoba memberikan nama file untuk grep sebagai parameter, lihat edit saya.
Eric

Maksud saya dengan 777 file bahwa Anda memiliki 777 salinan file yang berbeda, bukan chown. Saya menjalankan $$$ egrep -o '. {0,20} pseudomonas. {0,20}' * $$$. Perintah tetap di sana tanpa batas dan tidak melakukan apa-apa. Ini sekali lagi tampaknya bekerja $$$ egrep -ori '. {0,20} pseudomonas. {0,20}' * $$$. Sama dengan rekursi dan case-insetitive. Namun, ini sangat lambat. Saya pikir itu seharusnya tidak terlalu lambat. Grep jauh lebih cepat.
Léo Léopold Hertz 준영

jika catting tidak berhasil, Anda selalu bisa memasukkannya ke dalam file dengan menambahkan > results.txt di akhir perintah Anda, tetapi itu tidak akan memberi tahu Anda di file mana Anda menemukannya.
Eric

4
pcregrep -MnirIso '(?s).{0,20}pseudomonas.{0,20}' . |
  grep --color -e '^' -e pseudomonas

Mengasumsikan kecocokan dan konteksnya tidak tumpang tindih dan bahwa nama file tidak mengandung pseudomonas.

Perhatikan juga bahwa nomor baris yang dilaporkan adalah nomor awal dari konteks.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.