html - Mac OS X命令行终端下sed的使用

标签 html macos css sed find

我正在尝试在 Mac Sierra 的终端中结合使用 find 和 sed,但我无法完全正确地使用语法。这是迄今为止我能做的最好的事情:

MacBook-Pro:~ aschaub$ find . -name "*.html" -exec sed -i '' s/"'Lucinda Grande', 'Lucida Sans Unicode', 'Lucida Sans', 'DejaVu Sans'"/\"'Arial', 'Helvetica'" /g \;

它没有失败,但也没有用。我在正确的目录中,但是当我执行命令时,我只是来自 sed 的“>”提示实际上更新了我大量的 HTML 文件。我知道我真的应该有一个 .css 文件,其中指定了字体,但我继承了一些这段代码,目前,使用 find 和 sed 来重置几乎每个 HTML 文件中指定的字体会更容易。非常感谢帮我调试这个。干杯。

最佳答案

您必须用单引号将 sed 命令括起来,在字符串中转义 ' 以替换/替换字符串并使用 {} 来引用 找到的文件查找命令:

find . -name "*.html" -exec sed -i '' 's/"'\''Lucinda Grande'\'', '\''Lucida Sans Unicode'\'', '\''Lucida Sans'\'', '\''DejaVu Sans'\''"/"'Arial', 'Helvetica'" /g' {} \;

请注意,此命令会将整个字符串 "'Lucinda Grande', 'Lucida Sans Unicode', 'Lucida Sans', 'DejaVu Sans'" 替换为 "'Arial', 'Helvetica'",不是每个列出的字体。

如果你想用 'Arial', 'Helvetica' 替换每种字体,你可以试试这个(当用 " 包含 sed 命令时,你不需要不需要转义所有 '):

find . -name "*.html" -exec sed -i '' "s/'Lucinda Grande'/'Arial, 'Helvetica'/g;s/'Lucida Sans\( Unicode\)*'/'Arial', 'Helvetica'/g;s/'DejaVu Sans'/'Arial', 'Helvetica'/g" {} \;

或者如果你有 GNU sed:

find . -name "file" -exec sed "s/\('Lucinda Grande'\|'Lucida Sans\( Unicode\)*'\|'DejaVu Sans'\)/'Arial', 'Helvetica'/g" {} \;

关于html - Mac OS X命令行终端下sed的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42446507/

相关文章:

css - 为什么 @forward 命名前缀不适用于使用 Sass 的变量?

css - 对话框、 snackbar 、...entryComponents 上的 Angular Material 自定义主题

php - 使 "save image as"链接到不同的图像?

javascript - Web Worker 中的 CSS 选择?

java - 无法在 macOS : No toolkit found 上执行 JavaFX 示例

css - 文本溢出 Div

html - 在 Ruby 中将 CSV 转换为 HTML 表

html - 网站标题不会在窗口调整大小时拉伸(stretch) 100%

macos - NSTableView 中预选行不起作用

c - 使 malloc() 返回 NULL 而不是使程序崩溃?