다음 HTTP 응답을 구문 분석하고 싶지만 단일 컬 요청을 사용하여 값을 개별적으로 grep하는 방법을 알 수 없습니다.
두 가지 출력이 모두 필요합니다. 1. status_code - (HTTP 상태 코드 배열) 2. 예외Msg - (변수에서 예외가 발생함)
HTTP/1.1 100 Continue
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
Content-Length: 173
Connection: close
{"RemoteException":{"exception":"IllegalArgumentException","javaClassName":"java.lang.IllegalArgumentException","message":"Failed to parse \"false?op=CREATE\" to Boolean."}}
나는 이것을 시도했다
curl -i -X PUT -T test1.txt "http request"| grep HTPP
curl -i -X PUT -T test1.txt "http request" | grep Exception
명령 하나로 이 작업을 어떻게 수행할 수 있나요?
답변1
grep
정규 표현식이 지원됩니다. 예:
curl -i -X PUT -T test1.txt "http request"| grep -E "(HTTP|Exception)"
답변2
컬 출력을 임시 파일에 저장하고 상태 코드를 가져온 다음 파일을 삭제할 수 있습니다.
...
# put response in a temporary file
curl -i http://www.example.com -o response.html
# initialise array to hold status_codes in
status_codes=()
status_codes+=$(sed -n "1p" response.html | grep -o "[[:digit:]]\{3\}")
status_codes+=($(sed -n "3p" response.html | grep -o "[[:digit:]]\{3\}"))
# ^ change this to the line numnber where the reponse code is
# print status_codes array (you probably want to comment this out)
declare -p status_codes
rm response.html