2016-11-16 8 views
1

コードファイル内の| - >文字列の直前にブラケットを置き換えようとしています(同じ行に括弧もありますが各行でこの文字列の直前にある文字列を置換したい|例えば、以下の行では、この行の2番目の括弧を置換したいとします。シェルスクリプトコマンド特定の文字列シェルスクリプトに対して1つの文字だけを置き換えます

プロパティ((REQ1 == 0)| - >(GNT1 == 0));

+0

あなたの質問にそのサンプル入力の出力を追加してください。 – Cyrus

+0

希望する出力:プロパティ(!(req1 == 0)| - (gnt1 == 0)); – mii9

答えて

0

あなたはsedでそれを行うことができます。

それは (以外のものが続いていますのみ

property (! (req1 == 0) |-> (gnt1 == 0)); 

それが動作する方法は(s/\(後の1)を探すことであるが、(それは[^(]*、その後|->です:210枚の

echo 'property ((req1 == 0) |-> (gnt1 == 0));' | sed 's/\(([^(]*|->\)/! \1/' 

プリント。

+0

ありがとうございました。コードファイルのすべてのプロパティに対してこの置換を実行したいと思います。それらをすべて最初にエコーする必要がありますか?また、すべてのコードには異なるプロパティセットがあり、それらをすべて知っているわけではないので、すべてに適用できる一般的なものが必要であり、コードのすべてのプロパティでこの前にのみブラケットを変更します。御時間ありがとうございます。 – mii9

+0

@ mii9:いいえ、 'sed 's /.../' FILENAME'のように、echoを使わずにファイル名をsedに渡すことができます。 –

+0

ありがとうございました。とても役に立ちました。 – mii9

関連する問題