sedを使用してテキストを置き換え、関連する一致行の末尾に追加する方法は?
多くの置換を実行するsedファイルがあります。
そのうちの1つを使用する~=
ように変更してください。match(
/=\~/ s/=\~/match( /
)
これを行うときは、関連行の末尾に ""(スペース+閉じ括弧)を追加したい(元の一致を満たす)。
私はこのsedラインでこれを試しました:
/=\~/ s/=\~/match(/ s/$/ )/
しかし、私は私たちが一番好きなsed: -e expression #1, char 77: unknown option to
sを得ました
(ライン77、なぜならこのsedには他のものがたくさんあるからです(省略))。
この行にどのように)
追加できますか?このゲームでできますか?それとも別の回線が必要ですか?私はこの一致に対してのみ動作したいと思います。それ以外の場合は、)
「既存の」式に追加のmatch()
コンテンツを追加することがあります。
ㅋㅋㅋ完全なsedは...
sed -i 's/\.should/)\.to/
/\.to ==/s/==/eq/
/=\~/ s/=\~/match(/ s/$/ )/ <--- line in question
/[^}.to|end.to]\.to[[:space:]]/ s/\(\S\)/expect(\1/
/[^}.to|end.to]\.to_not[[:space:]]/ s/\(\S\)/expect(\1/
s/[^}.to|end.to].to[[:space:]]/).to /
s/to_receive/to receive/
s/to_not_receive/to_not receive/' ../_spec_seded/"$file"
ベストアンサー1
この試み:
sed -r "s/=~(.*)$/match(\1)/" <filename>
また、発生するエラーは、sedがジョブの/=\~/
フィルタ、ジョブ、およびs/=\~/match(/
フラグs/$/ )/
をジョブを実行する必要がある行として解釈するために発生します。この場合、グループを使用して式を新しい行と組み合わせる必要があります。
sed -re "/=\~/ {
s/=\~/match(/
s/$/ )/
}" <filename>
{}
コマンドブロックに関する関連文書は次のとおりです。info sed
`{ COMMANDS }'
A group of commands may be enclosed between `{' and `}' characters.
This is particularly useful when you want a group of commands to
be triggered by a single address (or address-range) match.