
私のファイル:
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
2番目の区切り文字フィールドを提供します[
。存在する
Informatica(r) PMCMD, version [10.2.0 HotFix2], build [1911.0401], Workflow run status: [Failed]
<---------- field 1 ---------> <------ field 2 ------> <------------ field 3 -----------> <field 4>
その場合は、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