我正在尝试在 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/