2013-06-03 22 views
0

我需要從日誌文件中提取一定的JSON數據(有數據列表成員),但只有地圖值相匹配不是200使用火柴不sed腳本

現在我有兩個sed腳本,一個從日誌文件中提取JSON數據:

sed -n 's/.*\({\"datalist\".*}\).*/\1/p' full.log > new.log 

另一個跳過的數據,如果地圖字段值200:

sed -n '/.*\"map\":\"200\".*/!p' new.log > map.log 

如何將這兩者結合成一個?

UPD:我已接受的答案了,但我不知道爲什麼

sed -n 's/.*\({\"datalist\".*\"map\":\"\(?!200\)\".*}\).*/\1/p' full.log > new.log 

不起作用

+0

多個sed條件的基本命令是'-e'。無論如何,我不認爲這是有用的。 – fedorqui

回答

2

這可能會爲你工作(GNU SED):

sed -n '/"map":"200"/!s/.*\({"datalist".*}\).*/\1/p' full.log > new.log 
2

地帶出:發送至之前的sed使用grep線 「圖200」:

grep -v "\"map\":\"200\"" full.log | sed -n 's/.*\({\"datalist\".*}\).*/\1/p' > new.log