zcat
내 명령의 결과는 다음과 같습니다
1 - URL Template: https://www.test.com
2 - Response: <200 OK,{Server=[nginx], Date=[Wed, 11 May 2022 01:05:06 GMT], Content-Type=[text/html; charset=UTF-8], Transfer-Encoding=[chunked], Connection=[keep-alive], Vary=[Accept-Encoding]}>
호출의 라인 2 결과를 아래와 같이 라인 1에 추가하고 싶습니다.
URL Template: https://www.test.com <200 OK,{Server=[nginx], Date=[Wed, 11 May 2022 01:05:06 GMT], Content-Type=[text/html; charset=UTF-8], Transfer-Encoding=[chunked], Connection=[keep-alive], Vary=[Accept-Encoding]}>
내가 할 수 있을까?
답변1
간단한 명령은 어떻습니까 awk
?
$ awk -F "1 - |2 - Response:" 'NF>1 {printf "%s",$2} END{print ""}' input_file
URL Template: https://www.test.com <200 OK,{Server=[nginx], Date=[Wed, 11 May 2022 01:05:06 GMT], Content-Type=[text/html; charset=UTF-8], Transfer-Encoding=[chunked], Connection=[keep-alive], Vary=[Accept-Encoding]}>
빈 줄을 무시하여 처리합니다.
다음을 가정합니다.
- 비어 있지 않은 두 줄은 항상 고정된 순서로 먼저 표시되고 그
1 - URL Template: ...
다음에 표시됩니다2 - Response: ...
. - 표시되는 두 줄 사이에 공백이 아닌 다른 줄이 나타나지 않습니다. 그렇지 않은 경우 추가 논리가 필요합니다. 그러한 변화는 간단합니다.
- 두 문자열 "1 - " 및 "2 - 응답: "은 각 줄의 시작 부분에 한 번만 나타납니다.
답변2
사용sed
$ sed '/^1/{:a;N;s/^[^A-Z]*\(.*\)\n[^<]*\(.*\)/\1 \2/;ba}' input_file
URL Template: https://www.test.com <200 OK,{Server=[nginx], Date=[Wed, 11 May 2022 01:05:06 GMT], Content-Type=[text/html; charset=UTF-8], Transfer-Encoding=[chunked], Connection=[keep-alive], Vary=[Accept-Encoding]}>
답변3
sed '/^$/d' filename| awk 'NR==2{gsub(/.*Response:/,"",$0)}1'|sed "1s/.*-//g"|perl -pne "s/\n/ /g"
산출
URL Template: https://www.test.com <200 OK,{Server=[nginx], Date=[Wed, 11 May 2022 01:05:06 GMT], Content-Type=[text/html; charset=UTF-8], Transfer-Encoding=[chunked], Connection=[keep-alive], Vary=[Accept-Encoding]}>