내 파일:
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