2017-06-09 91 views
-1

我正在用Electron和ReactJS編寫一個桌面應用程序來編輯CSS文件。查找和替換 - 用awk或sed

我需要掃描CSS查找類選擇器,然後清除以下聲明塊並添加一些新屬性。

棘手的部分是匹配選擇器中的類。我需要這個類是實際的目標(不是父類),但可能會有多個由逗號分隔的選擇器,所以我需要檢查它們。

例如, 在這個文件我在尋找的containerApp類:

.section僞 - 主.section僞右,。菜單.container - 馬努,.containerApp .container-NAV { 背景:黑色; }

.section-main2 .section-left,.menu .container-manu,.section-group-d .containerApp background:red; }

第一個塊不匹配,因爲.containerApp僅作爲實際目標的父項.container-nav提及。第二個塊匹配,我想刪除背景:紅色;並用其他東西替換它。 什麼是最好的方式去做這個CSS匹配和重寫?

+0

歡迎使用StackOverflow。 請參考[遊覽], 學習問好問題stackoverflow.com/help/how-to-ask, 做個[mcve]。一個MCVE應包括各種樣本輸入(說明所有方面)和期望的輸出。 – Yunnosch

回答

0

如果我正確理解您的要求,.containerApp需要是選擇器的最後一個元素。由於選擇符以逗號或花括號結尾,因此需要使用適當的正則表達式:

sed '/\.containerApp *[,{]/s/{[^}]*}/{ my new css rules }/' app.css 
+0

你對.. 我只需要知道該怎麼做... 如何清理{ 之間的所有內容並放入新的屬性。你能幫我麼? – Hananc86

+0

@ Hananc86對不起,我以爲你只是想刪除整個規則。 –

+0

非常感謝!它非常接近我需要的東西。 只有當規則在單行中時纔有效。另外你能指定只在第一場比賽中有效嗎? 。非常感謝你!我很高興:) – Hananc86