Linux

Unix命令在字元串之間切換

  • August 2, 2021

我的文件:

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 系統,讓 GNUgrep使用以下命令提取它:

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

那些將提取部分,Workflow run status: [there]而不必依賴線上上有多少[s。

引用自:https://unix.stackexchange.com/questions/663006