次のような出力を得るためにフィルタリングしているログファイルがあります
WI_1_test pass
WI_2_test fail
WI_3_test pass
最初の列のすべてのデータにクリック可能なハイパーリンクを設定し、基本的にテストごとに一意の URL を指すようにします。
bash で。
詳しい説明をお願いします。テスト結果のログ ファイルがあり、乱雑なログからレポートを作成したいと考えています。awk を使用して、上記の WI_1_test パスなどをフィルター処理しています。以下は私のコードです。
awk '/rtest.rosunit-rtest/' logfilefromjenkins.txt | sed 's/^.*\(WI\).\([0-9]*\)..\([a-Z]*\).*/\1-\2,\3/g'|awk 'BEGIN{OFS="\t"}$1="http://testspec.net/#/project/workitem?id="$1'|sort > testreport.csv .
次のようになります => 上記のコードを実行した後の現在の結果は、最初の列の異なるリンクのみを出力しています。
http://testspec.net/#/project/workitem?id=WI_1_test , pass
http://testspec.net/#/project/workitem?id=WI_2_test , fail
一方、私の最終目標は、最初の列に上記で示したすべてのデータを一意の URL にポイントし、PDF レポートをエクスポートできるようにすることです。最初の列のいずれかのテストをクリックするだけで、ユーザーはシステム上のテスト URL にリダイレクトされます。
これは、すべての列 1 データに対する私の期待です。
WI_1_テスト、 合格
WI_2_テスト、 失敗
答え1
あまりきれいではありませんが、awk式を次のように変更できます。
awk 'BEGIN{OFS="\t"}$1="["$1"](http://testspec.net/#/project/workitem?id="$1")"'
出力は次のようになります
[WI_1_test](http://testspec.net/#/project/workitem?id=WI_1_test) , pass
[WI_2_test](http://testspec.net/#/project/workitem?id=WI_2_test) , fail
これはクリック可能なリンクのマークダウン構文です
これを sed で直接実行することもできるはずです。
おそらくこんな感じ
sed 's/^.*\(WI\).\([0-9]*\)..\([a-Z]*\).*/[\1-\2](http:\/\/...=\1-\2),\3/g'
おそらく、括弧と丸括弧をエスケープする必要があります。入力データがないため、テストできません。また、出力にはダッシュがあるはずですが、サンプル出力にはダッシュがないため、sed 式を完全に理解していません。