2016-03-08 53 views
0

這裏是我到目前爲止的代碼...如何使用grep獲得匹配[1]?

cat config.json | grep -Po '"server"\s*:\s*"([^"]*)"' 

但我只想(括號)中的一部分。我不能使用後視,因爲它是可變長度的。我有什麼選擇?

樣品輸入1:

{"debug":false,"server":"dev-dutch","env":"dev"} 

樣品輸入2:

{ 
    "debug": false, 
    "server": "dev-dutch", 
    "env": "dev" 
} 

所需的輸出兩種:

dev-dutch 

我知道有可能是更安全/更好的方式來解析JSON ,但我想在shell中執行此操作,並且它應該在Ubuntu和FreeBSD上運行,而無需安裝任何外部程序,所以我可以用grep破解。

+0

@Cyrus良好的通話。更新。 – mpen

回答

1

隨着GNU的grep:

grep -Po '"server": *"\K[^"]+' file 
+0

'\ K'如何工作?它是否匹配從那裏到結束還是什麼?你可以添加一個停止點嗎?在此找不到任何文檔。 – mpen

+1

Nvm,發現它[這裏](http://perldoc.perl.org/perlre.html#Extended-Patterns)。 – mpen