我正在尝试在 Bash 中编写一行来获取给定 URL 的 Content-Type(不带编码)。这就是我到目前为止所拥有的:
curl -Is http://www.google.com | sed -nr 's/^Content-Type: ([^;]*)/\1/Ip'
但是,这仍然打印 text/html; charset=ISO-8859-1
而不仅仅是 text/html
。 ([^;]*)
不应该在第一个分号之后停止匹配吗?
最佳答案
你想要的是:
curl -Is http://www.google.com | sed -nr 's/^Content-Type: ([^;]*).*/\1/Ip'
基本上是在匹配组后面添加一个.*
,这样text/html后面的部分就可以了;不会输出。
关于bash - sed 匹配比预期更贪婪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10844931/