2013-05-29 28 views
0

我將如何使用sed在stdin中搜索正則表達式"pk": [0-9]+並將其替換爲"pk": null使用sed搜索和替換JSON使用來自stdin的正則表達式

例如轉換"pk": 123"pk": null

我已經試過類似:

cat mydata.json | sed -e s/\"pk\"\:\s[0-9]+/\"pk\"\:\snull/g 

但這並沒有影響。切回正則表達式,它似乎打破在[0-9]+,但我不知道爲什麼這是一個簡單而有效的正則表達式。我究竟做錯了什麼?

回答

0

這應該工作:

sed -e 's/"pk": [0-9]\+/"pk": null/g' mydata.json 
+1

如我所知,Jaypal將不會使用'cat'這種方式。 – Kent

+0

@Kent對不起,我剛剛將OP的嘗試複製到了'sed'命令並對其進行了修改。 :( –

+0

它必須使用管道標準輸入,我只使用mydata.json作爲例子,實際上我沒有一個文字文件 – Cerin

0

貓是沒有必要的。

sed 's/\(.*:\s*\)[0-9]\+/\1null/' file 

如果您需要的pk

sed 's/\("pk":\s*\)[0-9]\+/\1null/' file 

例如

kent$ echo '"pk": 123'|sed 's/\(.*:\s*\)[0-9]\+/\1null/' 
"pk": null