awk에서 여러 출력 라인을 함께 인쇄하는 방법

awk에서 여러 출력 라인을 함께 인쇄하는 방법

내 출력은 다음과 같습니다

________________________________________________

 :: Method           : GET
 :: URL              : HOST/FUZZ
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 500
 :: Matcher          : Response status: 200
________________________________________________

[Status: 200, Size: 52, Words: 2, Lines: 6]
    * FUZZ: index.jsp
    * HOST: https://test.com


이 출력에서 ​​내가 얻고 싶은 것은 두 가지를 하나로 묶는 것입니다.

예상 출력

https://test.com/index.jsp

내가 시도한 것은

awk '/HOST:/{ print $4} /FUZZ:/{ print $4}' ffuf'

산출

index.jsp
https://test.com

16진수 덤프 출력

grep 'FUZZ:' ffuf | hexdump -C

산출

00000000  0d 0d 20 20 20 20 2a 20  46 55 5a 5a 3a 20 69 6e  |..    * FUZZ: in|
00000010  64 65 78 2e 6a 73 70 0a                           |dex.jsp.|
00000018

그들에게 연락하는 방법을 아시나요?

감사해요

답변1

hexdump찾고 있는 데이터가 포함된 줄의 시작 부분에 두 개의 캐리지 리턴이 있다는 것이 표시된 출력 에서 ​​분명합니다. 구문 분석 데이터를 사용하는 경우 이는 해당 행의 첫 번째 필드를 형성합니다 awk. 아래의 두 가지 변형( sed및 )은 awk이러한 문제를 무시( )하거나 회피( )하여 이 문제를 해결합니다.sedawk


를 사용 sed하고 with 행이 FUZZ:항상 with 행 앞에 나타난다 고 가정합니다 HOST:.

$ sed -n '/.*FUZZ: /{ s///; h; }; /.*HOST: /{ s///; G; s,\n,/,p; }' file
https://test.com/index.jsp

sed명령(각 줄을 끄는 기본 출력으로 실행 -n)은 해당 FUZZ:줄을 일치시키고 파일 이름까지 해당 줄의 모든 항목을 삭제합니다. 그런 다음 파일 이름을 예약된 공간에 복사합니다 h.

줄이 일치 하면 HOST:줄의 시작 부분도 제거되고 공간을 예약하는 내용이 URL( HOST:줄의 나머지 부분)에 추가됩니다. 명령에 의해 삽입된 개행 문자는 G슬래시로 변경되고 결과 문자열이 인쇄됩니다.


를 사용하면 awk위와 동일한 가정이 이루어집니다.

$ awk -v OFS='/' '/FUZZ:/ { fuzz = $NF } /HOST:/ { print $NF, fuzz }' file
https://test.com/index.jsp

여기서 변수는 fuzz위 변형에서 사용한 공간 sed, 즉 파일 이름을 유지하는 역할을 합니다. $NF행의 마지막 필드의 데이터입니다.

답변2

나는 이것을함으로써 이것을 달성했습니다

awk '/FUZZ:/{ FUZZ=$4; next } /HOST:/{ print $4 "/" FUZZ }'

산출

https://test.com/index.jsp

관련 정보