
다음 줄의 나머지 부분을 제거하기 위해 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