正規表現条件

正規表現条件

私のコードファイルにはいくつかの行があり、次のテキストの助けを借りて置き換えたいと思いますT V= X T(A);。この検索と置換パターンが得られ、うまく機能しますが、問題は渡すパラメータがない場合です。たとえば、交換後(追加のコンマを参照)、誰かが追加のコンマを削除するのに役立ちますので、これを知っています。残念ながら、私は正規表現ユーザーではありません。=X(T,A)s/X\s+([^\(]*)\(/X(\1,/g;TT V= X T();X(T,)/X(\1,

isemptyが代わりに()doと言わなければならないどのような条件がありますか?X(\1/g/X(\1,/g

答え1

ファイルから実行するには、次の手順を実行します。後ろに最初の交換を実行した後にエラーが発生します。

sed 's/X(\([^,]*\),)/X(\1)/g'

X(<something-not-a-comma>,)に置き換えられる予定ですX(<something-not-a-comma>)

一度に 2 つの交換を実行するには、次の手順を実行します。

sed -e 'the first substitution' -e 'the second substitution'

答え2

@Kusalananda最初の置換コマンドで-Eオプションなしで拡張正規表現を使用したようです。

sed -e 's/X\s+([^\(]*)\(/X(\1,/g' -e 's/X(\([^,]*\),)/X(\1)/g' ./file

しかし、2番目のコマンドはよさそうだ。拡張正規表現ですべてを作成すると機能します。

sed -Ee 's/X\s+([^\(]*)\(/X(\1,/g;s/X\(([^,]*),\)/X(\1)/g' ./file

関連情報