Saya punya file dengan beberapa baris yang sangat panjang. Saya ingin mengambil string yang mungkin terjadi beberapa kali dalam file, termasuk mungkin lebih dari sekali pada satu baris.
$ cat 2014-11-03.json | grep 218
Ini menghasilkan output yang tidak dapat dibaca. Terlalu banyak.
$ cat 2014-11-03.json | grep -o 218
Ini mengurangi terlalu banyak. Ini hanya menunjukkan pola yang cocok tanpa konteks apa pun.
Pada dasarnya, saya ingin output seperti
... <category_id>218</category_id> ...
(Ya, ini XML, tapi saya tidak ingin mem-parsing XML. Saya hanya ingin menampilkan string yang cocok dengan beberapa karakter di kedua sisinya. Hanya beberapa karakter, bukan seluruh baris.)
Grep tampaknya memiliki opsi untuk ditampilkan hanya string yang cocok, atau string yang cocok dalam konteks baris penuh (perilaku default), atau string yang cocok dalam konteks beberapa baris sebelum dan sesudah, tetapi saya tidak dapat menemukan opsi untuk menampilkan string yang cocok dalam konteks beberapa karakter sebelum dan sesudah.
$ cat 2014-11-03.json | tr ' ' '\n' | grep 218
Itu tidak ideal: ini berfungsi selama file tersebut memiliki spasi di tempat yang kira-kira tepat. Ini bekerja untuk saya saat ini, tetapi tidak ada jaminan itu akan terjadi lagi.
sumber
sed <XMLfile 's/></>\n</g' | grep ...
sangat membantu saat menangani file XML tanpa baris baru.Jawaban:
Pertanyaan ini sudah lama, tetapi karena saya sengaja menemukannya saat mencari cara untuk hanya menangkap sebagian dari sebuah baris, begini:
Solusinya adalah untuk mengaktifkan opsi 'hanya-cocok' dan kemudian menggunakan kekuatan RegExp untuk mendapatkan sedikit lebih banyak daripada teks Anda:
Tentu saja, jika Anda menggunakan penyorotan warna, Anda selalu dapat menangkap lagi untuk hanya mewarnai kecocokan nyata:
catatan:
sumber
Taruhan saya tahu cara menampilkan json dalam format cantik menggunakan pjson. Setelah format, Anda dapat menambahkan perintah grep Anda.
Instal dengan
pip
:dan kemudian, pipa semua konten json ke
pjson
.sumber
.json
ekstensi, itu tidak benar JSON: setiap baris adalah dokumen JSON independen.)