私の出力は次のとおりです
________________________________________________
:: 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
この出力で私が得たいのは、2つを1つにまとめることです。
期待される出力
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
探しているデータを含む行の先頭に2つのキャリッジリターンがあることが示されている出力から明らかです。解析データを使用する場合、これはその行の最初のフィールドを形成しますawk
。以下の2つのバリエーション(sed
および)は、awk
これらの問題を無視()または回避()してこの問題を解決します。sed
awk
を使用し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
行の最後のフィールドのデータです。