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]}>
空行を無視して処理します。
以下を想定します。
- 空でない2行は常に固定順序で最初に表示され、その後
1 - URL Template: ...
に表示されます2 - Response: ...
。 - 表示される 2 行間にスペース以外の行は表示されません。それ以外の場合は追加のロジックが必要です。そのような変更は簡単です。
- 2つの文字列「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]}>