我從來沒有使用sed
除了幾小時試圖解決這個問題。我有一個配置文件與參數,如:如何使用sed解析配置文件
test.us.param=value
test.eu.param=value
prod.us.param=value
prod.eu.param=value
我需要解析這些輸出這一點,如果REGIONID
是美國:
test.param=value
prod.param=value
如何做到這一點(與sed
或其他方式)的任何幫助將很棒。
我從來沒有使用sed
除了幾小時試圖解決這個問題。我有一個配置文件與參數,如:如何使用sed解析配置文件
test.us.param=value
test.eu.param=value
prod.us.param=value
prod.eu.param=value
我需要解析這些輸出這一點,如果REGIONID
是美國:
test.param=value
prod.param=value
如何做到這一點(與sed
或其他方式)的任何幫助將很棒。
如果有數百行和數百行,首先搜索包含.us的行可能會更高效。然後做字符串替換... AWK是另一個不錯的選擇或grep grep into sed
cat INPUT_FILE | grep "\.us\." | sed 's/\.us\./\./g'
當然如果'.us。'可以在此值不是就足夠了。
你也可以做與地址語法(從技術上講,你可以嵌入第二sed的到的第一個語句如干脆不記得語法)
sed -n '/\(prod\|test\).us.[^=]*=/p' FILE | sed 's/\.us\./\./g'
我們或許應該做一些清潔劑。如果格式總是爲environment.region.param,我們可以看一下強制這隻發生在等號前面的文本上。
sed -n 's/^\([^,]*\)\.us\.\([^=]\)=/\1.\2=/g'
這隻適用於以任意數量的字符開頭,後跟'。'的行。然後'我們',然後''。然後在'='符號之前有任何數字。這樣我們就不會修改'.us'。如果在「值」中找到
您能澄清一下REGIONID是或指的是什麼? – UpAndAdam 2013-04-29 16:00:43
腳本中的變量 – Michael 2013-04-29 16:08:57
因此,數據的格式有點像ENVIRONMENT.REGIONID.param = value,儘管區域ID可能需要根據大小寫進行更改。 只是試圖清楚你爲什麼選擇你選擇的行。我認爲我們都推測了所有這些,但這會提高問題的清晰度。 – UpAndAdam 2013-04-29 16:36:15