为什么这个 sed 不起作用?

为什么这个 sed 不起作用?

我想大量更改 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,而在正则表达式中*则重复前一个模式任意次数。

因此,您需要.*而不是*(匹配任何字符任意次数);您的字符串指定任意数量的双引号后跟下划线。

.请注意,源字符串中的点与正则表达式中的点无关,正则表达式匹配任何字符,包括其自身。

相关内容