2012-10-02 49 views
0

您好我有一個有一堆項目如一個相當長的JSON文件:grep的JSON代碼塊

{ 
Title: ABC123 
Date: 583838484483 
User: ABC33333 
}, 
...etc 

什麼我要找的是能夠到grep一個字符串,如果它包含該代碼塊中的任何位置將返回整個塊。你可以給予什麼幫助?

好吧,我想我已經到了一半,所以我可以在{}之間打印awk,但現在如何才能將它打印到自己的文件中?

cat all.txt /{/ , /},/ { print $0 }>test.txt 
+0

你可以嘗試只使用上下文選擇,如果你想要一個大概的答案('-C '前後顯示'n'行) – nneonneo

回答

0

您可以使用grep與像--before上下文和--AFTER上下文選項:

grep --before-context=5 --after-context=5 "User: ABC33333" file.json 
+0

或更簡單的'-C5'。 – nneonneo

+0

謝謝,但如果我正在爲最後一行我喜歡grep,我會希望所有行上面,而不是下面的X行,因爲這將切入下一個代碼塊,可能不會匹配。 – Tony

+0

檔案有多大?你可以嘗試將它加載到一個javascript數組中,並選擇符合你想要的條件的對象。另一種選擇是將該json對象加載到數據庫中並查詢記錄,然後將其寫入json。 –