使用 awk 导出 CSS 规则

Exporting CSS Rules with awk

我正在尝试使用 awk 从 css 文件导出 css 规则,但我做不到。我只需要包含 "background-image" 行的规则。

#rule{
...
background-image: url(path);
}

这是我目前尝试过的方法:

awk '/^[#].*{.*background-image.*/','/}/' css/file.css

我做错了什么?

此刻我得到了最好的结果:

/^[#A-Za-z.]/ { accum = 1; }
accum == 1 { css = css [=13=] "\n"; }
accum == 1 && /background-image/ { found = 1; }
/\}/ { accum = 0; if (found == 1) print css; found = 0; css = ""; }

它允许我获得包含所有选择器的完整块

匹配左大括号后打开累积。标志打开时累积所有行。看到右括号后关闭。仅当在累积过程中找到背景图像时才打印。如果你想在比赛前加入几行,你可以这样做。

{ line4 = line3; line3 = line2; line2 = line1; line1 = [=10=] "\n"; }
/\{/ { accum = 1; head = line4 line3 line2 line1; }
accum == 1 { css = css [=10=] "\n"; }
accum == 1 && /background-image/ { found = 1; }
/\}/ {
    accum = 0;
    if (found == 1) print head css;
    found = 0; css = "";
}

你在评论中说过 "I need the full block from # (or . ) to }" 但我的印象是你真的只是想要这个。

/\{/ { selector = [=11=] }
/background-image/ { print selector "\n" [=11=] "\n}\n" }