Fügen Sie mithilfe eines Bash-Skripts allen Daten der ersten Spalte einen Hyperlink hinzu

Fügen Sie mithilfe eines Bash-Skripts allen Daten der ersten Spalte einen Hyperlink hinzu

Ich habe Protokolldateien, die ich filtere, um eine Ausgabe wie diese zu erhalten

WI_1_test  pass
WI_2_test fail
WI_3_test pass

Ich möchte, dass alle Daten in der ersten Spalte einen anklickbaren Hyperlink enthalten, der grundsätzlich auf eine URL verweist, die für jeden Test eindeutig ist.

mit Bash.

weitere Erklärung! Ich habe eine Protokolldatei mit Testergebnissen und möchte aus dem unübersichtlichen Protokoll einen Bericht erstellen. Ich verwende awk, um nach dem obigen WI_1_Testdurchlauf usw. zu filtern. Unten ist mein Code.

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    . 

etwa so => ​​mein aktuelles Ergebnis, nachdem ich den obigen Code ausgeführt habe, gibt nur die unterschiedlichen Links in der ersten Spalte aus.

http://testspec.net/#/project/workitem?id=WI_1_test , pass

http://testspec.net/#/project/workitem?id=WI_2_test , fail

In der Zwischenzeit besteht mein Endziel darin, dass alle Daten, wie oben in der ersten Spalte angezeigt, auf eindeutige URLs verweisen, sodass der Benutzer beim Exportieren eines PDF-Berichts durch einfaches Klicken auf einen der Tests in der ersten Spalte zur Test-URL im System weitergeleitet werden kann.

Dies ist meine Erwartung für alle Daten in Spalte 1:

WI_1_test, passieren

WI_2_test, scheitern

Antwort1

es ist nicht schön, aber Sie können Ihren Awk-Ausdruck wie folgt ändern

awk 'BEGIN{OFS="\t"}$1="["$1"](http://testspec.net/#/project/workitem?id="$1")"'

Die Ausgabe sollte dann so aussehen

[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

Das ist die Markdown-Syntax für anklickbare Links

Sie sollten dies auch direkt in sed tun können.

vielleicht so

sed 's/^.*\(WI\).\([0-9]*\)..\([a-Z]*\).*/[\1-\2](http:\/\/...=\1-\2),\3/g'

Vielleicht müssen Sie die Klammern und runden Klammern escapen. Ich kann das nicht testen, weil ich Ihre Eingabedaten nicht habe. Außerdem verstehe ich Ihren Sed-Ausdruck nicht ganz, weil in der Ausgabe ein Bindestrich enthalten sein sollte, in Ihrer Beispielausgabe aber keiner vorhanden ist.

verwandte Informationen