문자열 사이를 자르기 위한 Unix 명령

문자열 사이를 자르기 위한 Unix 명령

내 파일:

Informatica(r) PMCMD, version [10.2.0 HotFix2], build [1911.0401],  Workflow run status: [Failed]

내가 필요한 출력은Failed

내가 얻는 결과는 다음과 같습니다.10.2.0 HotFix2

사용된 명령:

grep "Workflow run status:" test.txt | cut -d'[' -f2 | cut -d']' -f1

워크플로 실행 상태:가 필드에 나타나면 내 목표는 워크플로 실행 상태:를 검색한 다음 해당 필드의 상태를 인쇄하는 것입니다. 워크플로 실행 상태 때문에: 모든 행이나 필드에 나타날 수 있습니다.

답변1

cut -d'[' -f2두 번째 구분 기호 필드를 제공합니다 [. 존재하다

Informatica(r) PMCMD, version [10.2.0 HotFix2], build [1911.0401],  Workflow run status: [Failed]
<---------- field 1 ---------> <------ field 2 ------> <------------ field 3 -----------> <field 4>

그렇다면 네 번째 필드를 원할 것입니다 Failed. 그러나 다음을 사용하여 sed다음 부분을 추출 하는 것이 Workflow run status더 합리적입니다 .

sed -n 's/^.*Workflow run status: \[\([^]]*\)\].*$/\1/p' < file

또는 질문의 원래 태그가 GNU 시스템을 사용하고 있음을 나타내므로 GNU가 다음을 grep통해 시스템을 추출하도록 하십시오.

grep -Po 'Workflow run status: \[\K[^]]*' < file

이것은 라인에 얼마나 많은 부분이 있는지 Workflow run status: [there]에 의존하지 않고 해당 섹션을 추출합니다.[

답변2

awk -F "[,:]" '{for(i=1;i<=NF;i++){if($i ~ /Workflow run status/){gsub(/[\[\]]/,"",$(i+1));print $(i+1)}}}' filename



 output

 Failed

관련 정보