sed를 사용하여 다음 줄의 나머지 부분을 삭제해 보았습니다. HTTP1.1" 200
큰따옴표와 공백을 포함하여 전체 내용을 문자열로 일치시키려는 것을 sed가 이해하도록 하는 방법을 모르겠습니다.
나는 좋은 예를 들고 싶다:
"GET /images/loading.gif HTTP/1.1" 200 10819 "https://...
입력하다
"GET /images/loading.gif HTTP/1.1" 200
답변1
명령줄에서 sed(또는 대부분의 다른 도구)를 사용할 때는 문자열을 공백으로 인용해야 합니다. 이미 큰따옴표를 사용했으므로 작은따옴표를 사용해야 합니다.
echo '"GET /images/loading.gif HTTP/1.1" 200 10819 "https://...' | \
sed 's|HTTP/1.1" 200.*|HTTP/1.1" 200|'
다음을 제공합니다:
"GET /images/loading.gif HTTP/1.1" 200
답변2
GNU grep을 사용하십시오:
| grep -o '.*HTTP/1\.1" 200'
GNU sed 사용:
| sed -r 's/(.*HTTP\/1\.1" 200).*/\1/'
답변3
일치하는 문자열 뒤에 개행 구분 기호를 추가하면 P
패턴 공간을 너무 많이 수정하지 않고도 일정량의 패턴 공간만 인쇄할 수 있습니다. 이는 패턴 공간에 문자의 일부가 아닌 바이트가 포함된 경우에도 종종 작동합니다.
sed -n 's|HTTP/1.0” 200|&\n|;P' <in >out
n
참고: GNU로 작성된 대로 작동하지만 위에 사용된 줄 바꿈 대신 리터럴 줄 바꿈을 사용하는 것이 좋습니다.sed