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.
sed <XMLfile 's/></>\n</g' | grep ...
sangat membantu saat menangani file XML tanpa baris baru.