cURL 여러 줄 출력을 세미콜론으로 구분된 단일 줄로 변환

cURL 여러 줄 출력을 세미콜론으로 구분된 단일 줄로 변환

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\nCR LF( )로 끝나야 합니다. 하나는 제거하고 다른 하나는 개행 문자로 변환해야 합니다.

$ 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=...

관련 정보