2017-12-20 4 views
0

2つのパターンの間でテキストを抽出したい。私が使用するコマンドは、AIXでは動作しませんが、Linux上で動作します。パターン間でテキストを抽出する - unix - AIX

まず、私は、ファイル内のパターンの出現箇所を探して、私はSTEP 005450 ***ACTIVATED***STEP 005450 ***FAILURE***間のテキストの一部を抽出する、第二に、この

sed -n "/STEP 005450/p" step_100 
STEP 005450 ***ACTIVATED*** Thu Oct 5 17:31:05 CEST 2017 
STEP 005450 REF R-A493 STEP 000010 (command -s <CONTAINER>) 
STEP 005450 ***FAILURE*** Thu Oct 5 17:31:05 CEST 2017 Return code : 2 
STEP 005450 ***ACTIVATED*** Thu Oct 5 17:33:54 CEST 2017 
STEP 005450 REF R-A493 STEP 000010 (command -s CONT1) 
STEP 005450 ***SUCCESFUL*** Thu Oct 5 17:33:55 CEST 2017 

を持っていますが、doesnの以下のコマンド」仕事をして何もしません。

sed -n "/STEP 005450/p" step_100 | sed -n "/STEP 005450/,/FAILURE/p" 
STEP 005450 ***ACTIVATED*** Thu Oct 5 17:31:05 CEST 2017 
STEP 005450 REF R-A493 STEP 000010 (command -s <CONTAINER>) 
STEP 005450 ***FAILURE*** Thu Oct 5 17:31:05 CEST 2017 Return code : 2 
STEP 005450 ***ACTIVATED*** Thu Oct 5 17:33:54 CEST 2017 
STEP 005450 REF R-A493 STEP 000010 (command -s CONT1) 
STEP 005450 ***SUCCESFUL*** Thu Oct 5 17:33:55 CEST 2017 

通常、私はこの

STEP 005450 ***ACTIVATED*** Thu Oct 5 17:31:05 CEST 2017 
STEP 005450 REF R-A493 STEP 000010 (command -s <CONTAINER>) 
STEP 005450 ***FAILURE*** Thu Oct 5 17:31:05 CEST 2017 Return code : 2 

ツアーヘルプ

+0

GNU sedのは、あなたの所望の出力を与えるものではありません。おそらくコピーの貼り付けエラーがあります。 – Thor

+0

私は手動でコマンドを入力しました。 – AaronLbk

+0

あなたの質問は、それが立っているかは不明です。 [MCVE原則](https://stackoverflow.com/help/mcve) – Thor

答えて

1

のおかげでは多分これがAIXで動作しますが、あまりにも、sedをしておく必要があります

| sed -n "/ACTIVATED/,/FAILURE/{ /ACTIVATED/{h;b}; H; /FAILURE/{g;p}; }" 

または1つのコマンドとして:

sed -n '/STEP 005450/{ /ACTIVATED/,/FAILURE/{ /ACTIVATED/{h;b}; H; /FAILURE/{g;p}; }; }' file 

出力:あなたが述べるよう

 
STEP 005450 ***ACTIVATED*** Thu Oct 5 17:31:05 CEST 2017 
STEP 005450 REF R-A493 STEP 000010 (command -s ) 
STEP 005450 ***FAILURE*** Thu Oct 5 17:31:05 CEST 2017 Return code : 2 
+0

に従ってください。動作しません:/。それは私にこのエラーを返します: sed:ラベル/ ACTIVATED /、/ FAILURE/{/ ACTIVATED/{h; b}; H;/FAILURE/{g; p}; }は8文字を超えています。 – AaronLbk

+0

あまりにも悪いです。それは試してみる価値があった。 – Cyrus

+0

すべての論理的機会に ';'を加えることを試してください。 '/ ACTIVATED/{; h; b;};'いくつかのsedsは、構文解析の仕方が非常によく、AIXは多くの点で特別です。がんばろう。 – shellter

関連する問題