로그 파일이 있고 이 파일을 필터링하여 다음과 같은 출력을 얻습니다.
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로 리디렉션됩니다.
이것이 모든 첫 번째 열 데이터에 대해 내가 기대하는 것입니다.
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 표현을 완전히 이해하지 못합니다.