2016-04-20 4 views
-1
<testcase classname='tc1' name='tc1' time='78.455094'/> 
    <testcase classname='tc2' name='tc2' time='78.549320'> 
    <failure type='fail-verdict'> 
     error message 
    </failure> 
    </testcase> 
    <testcase classname='tc3' name='tc_3' time='78.444719'/> 

と別に一つの属性を置き換える;例えば:TC1、TC3 - パス、tc2-失敗)。私はsedを試みた:sed -i 's/time=\'[0-9]+\.[0-9]+'/status="pass"/g' file.txt最初に何のロジックなし。しかし、それは動作しません。<code>status</code>(ステータス=「合格」またはテストケースに基づいて、「失敗」属性にテストケースタグに3-RD属性<code>time</code>を交換する方法SEDまたはAWK

+3

としては何度Bを提案しましたそれでは、regexがXMLを操作する正しいツールであるかどうか再考する必要があります。 – andlrc

+0

あなたの質問を編集して、その入力が与えられたときに期待される出力を表示してください。 –

+0

今実際の質問ではありません。私はすでに – ascentman

答えて

1

あなたはERE+およびそれ以上)を使用する-Eオプション(およびsedのGNUのため-r)を必要とするか、またはあなたはあなたが単一引用符の内側singlequotesを免れることはできない[0-9][0-9]*

を使用する必要があり、次の操作を行う必要があります

% echo 'hello'\'' world' 
hello' world 

はあなたのコマンドに適用される:

sed -i 's/time='\''[0-9][0-9]*\.[0-9][0-9]*'\''/status="pass"/g' file.txt 
+0

のおかげで答えの助けを借りてそれを作った。それは私の仕事の最初の部分をコアに変えます。 – ascentman

+0

ここには1つのことが残っています。次の行にタグが見つかった場合、ファイルの前の行を変更するにはどうすればよいですか? sedで可能か、grepやawkを使うべきですか? – ascentman

+0

@Wlodek gnu sedを使用している場合、 '-z'修飾子を使用すると、ファイル全体を「1行」にスラップし、' \ n'に改行をマッチさせることができます。しかし、正規表現で言ったように、xmlを解析/変更するのには向いていません – andlrc

関連する問題