用于在字符串之间进行剪切的 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

如果 Workflow run status: 出现在任何字段中,我的目标是搜索 Workflow run status: 然后打印该字段的状态。因为工作流程运行状态:可以出现在任何行或字段中

答案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 系统,请让 GNUgrep通过以下方式提取它:

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

相关内容