我一直试图找出如何替换CSS文件中包含的某些字符串,这些字符串包含我希望一次使用Bash在多个文件中替换的相同CSS变量字符串,以避免繁琐的任务打开每个目录中的每个CSS文件实例,只是为了替换这些CSS文件中的某些字符串。
在我的CSS文件中我想要注释掉CSS代码中的某些行,但是我无法转义某些字符并使用注释掉的行转换该行,即; outline-style: dashed;
与/*outline-style: dashed;*/
我无法弄清楚如何逃避:
和;
字符以及以下内容,以便评论我到目前为止所尝试的行/* */
但是对我来说没有用的是使用带有perl的xargs;
find . -type f | xargs perl -e 's/outline-style dashed;/\/*outline-style dashed;*/\/g;'
但是这会返回错误
Backslash found where operator expected at -e line 1, near "s/outline-
style dashed;/\/*outline-style dashed;*/\"
syntax error at -e line 1, near "s/outline-style dashed;/\/*outline-
style dashed;*/\"
Search pattern not terminated at -e line 1.
xargs: perl: exited with status 255; aborting
我也试过使用sed,它似乎适用于最简单的替换,尝试使用
find . -type f -exec sed -i 's/$^outline-style\: dotted\;/\/*outline-style\: dotted\;/g' *.{css} \;
但这不起作用,这只会返回错误sed: can't read *.{css}: No such file or directory
我在没有添加*.{css}
的情况下尝试了但仍然给了我相同的错误,但没有输出更改任何CSS文件。
答案 0 :(得分:1)
如果您没有以.css结尾的目录,可以使用:
shopt -s globstar
sed -i 's/^outline-style: dashed;$/\/*outline-style: dashed;*\//' **/*.css
或者您可以像这样编辑find
示例:
find . -type f -name '*.css' -exec sed -i 's/^outline-style: dashed;$/\/*outline-style: dashed;*\//' {} +
请注意,某些字符确实需要进行转义,例如斜杠。