我正在編寫一個bash腳本來安裝Phoenix應用程序。我想添加依賴到我的配置文件的deps
部分而不依賴行號。找到給定字符串後的第一個字符
31 # Type `mix help deps` for examples and options.
32 defp deps do
33 [{:phoenix, "~> 1.2.1"},
34 {:phoenix_pubsub, "~> 1.0"},
35 {:phoenix_ecto, "~> 3.0"},
36 {:postgrex, ">= 0.0.0"},
37 {:phoenix_html, "~> 2.6"},
38 {:phoenix_live_reload, "~> 1.0", only: :dev},
39 {:gettext, "~> 0.11"},
40 {:cowboy, "~> 1.0"}]
41 end
在這種情況下,我想打開]
在管線40到逗號,並插入{:foo, "~> 1.0"}]
下面線40我假設你可以在SED或AWK表達式中使用defp deps do
作爲標記,然後定位後面的第一個]
。
這樣做的最好方法是什麼?
燁,你必須先從邏輯......這裏的有些東西可以幫助你嘗試命令https:// stackoverflow。com/questions/38972736/how-to-select-lines-between-two-patterns然後詢問你是否被卡住 – Sundeep
@Sundeep事實證明,這是配置文件中唯一出現的模式'}]存在,所以一個簡單的'sed'沒有看看周圍的作品。但是,這超出了我原來的問題和意圖。 @sat有一個可靠的答案(儘管一個用於GNU sed,OSX sed是不同的)...如果你能在awk中提供更通用的解決方案,我會將其標記爲正確的。 –