![SED 또는 기타 명령을 사용하여 두 번째 행에 열 기반 일치를 추가하려면 어떻게 해야 합니까?](https://linux55.com/image/205747/SED%20%EB%98%90%EB%8A%94%20%EA%B8%B0%ED%83%80%20%EB%AA%85%EB%A0%B9%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%91%90%20%EB%B2%88%EC%A7%B8%20%ED%96%89%EC%97%90%20%EC%97%B4%20%EA%B8%B0%EB%B0%98%20%EC%9D%BC%EC%B9%98%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
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]}>