文字列間を切り捨てる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

ワークフロー実行ステータス:がフィールドに表示された場合、私の目標はワークフロー実行ステータス:を検索してそのフィールドのステータスを印刷することです。ワークフロー実行状態のため: すべての行またはフィールドに表示できます。

ベストアンサー1

cut -d'[' -f22番目の区切り文字フィールドを提供します[。存在する

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]に依存せずにそのセクションを抽出します。[

おすすめ記事