curl -s -I -L example.com | grep 'HTTP\|Location'
複数行の出力を提供する特定のURLへのリダイレクトを追跡するために使用しています。
$ curl -s -I -L google.com | grep 'HTTP\|Location'
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
HTTP/1.1 200 OK
出力の各行を接続し、セミコロンで区切りたいです。
HTTP/1.1 301 Moved Permanently;Location: http://www.google.com/;HTTP/1.1 200 OK;
私はこれを試しましたが、curl -s -I -L google.com | grep 'HTTP\|Location' | tr '\n' ';' > file
これは行を置き換えて\n
接続;
しません。
$ curl -s -I -L google.com | grep 'HTTP\|Location' | tr '\n' ';' > file
$ cat file
HTTP/1.1 301 Moved Permanently;
Location: http://www.google.com/;
HTTP/1.1 200 OK;
どんなアイデアでも大いに感謝します。ありがとうございます。
答え1
HTTPプロトコルでは、ヘッダー行は\r\n
CR LF()で終わる必要があります。 1つは削除し、もう1つは改行文字に変換する必要があります。
$ curl -s -I -L google.com | grep 'HTTP\|Location' | tr -d '\r' | tr '\n' ';'
HTTP/1.1 302 Found;Location: http://www.google.eu/?gws_rd=cr&ei=Hx1JWIDpGordvATO65S4BQ;HTTP/1.1 200 OK;
答え2
-w
パラメータを使用することもできますcurl
。
> curl -fs -w "%{response_code},%{redirect_url}\n" -o /dev/null http://google.com
302,http://www.google.de/?gfe_rd=cr&ei=...