bash - sed 匹配比预期更贪婪

标签 bash curl sed

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

相关文章:

php - 如何忽略 Guzzle 5 中的无效 SSL 证书错误

php - 发送请求 Web 服务时 PHP 中出现 Curl 错误 56

c++ - cURL c++ 和 gunzip

shell - 使用 sed 或 grep 进行日志解析

arrays - 查找两个 Bash 数组之间的公共(public)项

bash - echo "-n"不会打印-n?

linux - 如何使用 IF/Then Bash 命令比较 2 个文件中的行数

linux - 递归查找目录中文件的数量

regex - 使用 sed 或 awk 从字符串中删除前导和尾随数字,同时保留 2 个数字

regex - 匹配两个标记内任意位置的单词,由空格或标记分隔