Curl 如何使用AWK单行程序获取HTTP状态代码?

Curl 如何使用AWK单行程序获取HTTP状态代码?,curl,http-headers,awk,Curl,Http Headers,Awk,我只想打印使用cURL检索的网页的。使用AWK单衬套是否可以做到这一点?解决方案 下面的一行程序将从管道中读取HTTP头,并打印出状态代码 awk 'BEGIN {"curl -sI http://example.com" | getline; print "Status Code: " $2}' 有趣的方面 这种方法有一些优点,乍一看可能并不明显。例如: 这个解决方案是纯AWK;不需要shell脚本或包装器 因为我们只关心标题的第一行,所以不需要跟踪或比较NR来跳过不需要的行 $0填充在B

我只想打印使用cURL检索的网页的。使用AWK单衬套是否可以做到这一点?

解决方案 下面的一行程序将从管道中读取HTTP头,并打印出状态代码

awk 'BEGIN {"curl -sI http://example.com" | getline; print "Status Code: " $2}'
有趣的方面 这种方法有一些优点,乍一看可能并不明显。例如:

  • 这个解决方案是纯AWK;不需要shell脚本或包装器
  • 因为我们只关心标题的第一行,所以不需要跟踪或比较NR来跳过不需要的行
  • $0填充在BEGIN块中,因此AWK不需要文件参数
解决方案 下面的一行程序将从管道中读取HTTP头,并打印出状态代码

awk 'BEGIN {"curl -sI http://example.com" | getline; print "Status Code: " $2}'
有趣的方面 这种方法有一些优点,乍一看可能并不明显。例如:

  • 这个解决方案是纯AWK;不需要shell脚本或包装器
  • 因为我们只关心标题的第一行,所以不需要跟踪或比较NR来跳过不需要的行
  • $0填充在BEGIN块中,因此AWK不需要文件参数

只需卷曲即可获得,甚至不用awk:

curl -I http://example.com/ -w '%{response_code}' -so /dev/null

curl的选项会发出一个HEAD请求,这通常是您想要的。

您只需curl就可以得到它,甚至不用awk:

curl -I http://example.com/ -w '%{response_code}' -so /dev/null

curl的选项会发出一个HEAD请求,这通常是您想要的。

如果您使用的是Gawk,您甚至可能不需要curl。传统的awk无法打开套接字或进行HTTP连接,但gawk确实具有这种能力。但是脚本可能不止是一行程序,因为它必须实现自己对HTTP的基本支持。请查看详细信息。@ghoti同意。这个问题专门解决从cURL获取状态的问题,而套接字解决方案并不是一个好的单行程序。当然完全可以在呆呆的状态下完成,但这有点超出了问题的范围。不过,如果你有一个解决方案,我会非常感兴趣。也许作为另一个问答?如果你使用的是Gawk,你甚至不需要卷曲。传统的awk无法打开套接字或进行HTTP连接,但gawk确实具有这种能力。但是脚本可能不止是一行程序,因为它必须实现自己对HTTP的基本支持。请查看详细信息。@ghoti同意。这个问题专门解决从cURL获取状态的问题,而套接字解决方案并不是一个好的单行程序。当然完全可以在呆呆的状态下完成,但这有点超出了问题的范围。不过,如果你有一个解决方案,我会非常感兴趣。也许作为另一个问答?%{response_code}是curl7.18.2中添加的别名。使用%{http_code}更安全,因为%{response_code}是curl7.18.2中添加的别名。使用%{http_code}更安全,除非curl与awk一起提供,否则这不是纯awk,因为它显然需要curl。除非curl与awk一起提供,否则这不是纯awk,因为它显然需要curl。