我想大量更改 200 多个 html 文件中的某些 css 引用。大多数文件都是自动生成的静态 HTML。现在,我需要更改一些 css 文件的位置。因此,我使用了 sed:
sed -s 's/href="*_css/href="css/g' ./12*.htm*
源码是这样的:
href="11.2.Lab%20_css/styles.css"
href="10.2.Lab%20_css/styles.css"
但运行 sed 时什么也没有发生!
错误在哪里?
答案1
这很令人困惑,但*
在中匹配任意字符串bash
,而在正则表达式中*
则重复前一个模式任意次数。
因此,您需要.*
而不是*
(匹配任何字符任意次数);您的字符串指定任意数量的双引号后跟下划线。
.
请注意,源字符串中的点与正则表达式中的点无关,正则表达式匹配任何字符,包括其自身。