Linux
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
如果 Workflow run status: 出現在任何欄位中,我的目標是搜尋 Workflow run status: 然後列印該欄位的狀態。因為 Workflow 執行狀態:可以出現在任何行或欄位中
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]
而不必依賴線上上有多少[
s。