Bash 스크립트를 사용하여 모든 첫 번째 열 데이터에 하이퍼링크 추가

Bash 스크립트를 사용하여 모든 첫 번째 열 데이터에 하이퍼링크 추가

다음과 같은 출력을 얻기 위해 필터링하는 로그 파일이 있습니다.

WI_1_test  pass
WI_2_test fail
WI_3_test pass

첫 번째 열의 모든 데이터를 클릭 가능한 하이퍼링크로 만들고 싶습니다. 기본적으로 각 테스트마다 고유한 URL을 가리킵니다.

배쉬와 함께.

더 많은 설명! 테스트 결과에 대한 로그 파일이 있고 지저분한 로그에서 보고서를 준비하고 싶습니다. 위의 WI_1_test pass ..etc로 필터링하기 위해 awk를 사용하고 있습니다. 아래는 내 코드입니다.

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

한편 내 최종 목표는 PDF 보고서를 내보낼 때와 같이 고유한 URL을 가리키는 첫 번째 열에 위에 표시된 모든 데이터를 갖는 것입니다. 첫 번째 열의 테스트 중 하나를 클릭하면 사용자가 시스템의 테스트 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 표현식을 완전히 이해하지 못합니다.

관련 정보