sedを使用して特殊文字を置き換える

sedを使用して特殊文字を置き換える

シェルを使用して特殊文字を変更する必要があるため、sedを使用するのに理解できないエラーが少しあります。

<%_ by [@, ("_" = dash)
_%> by ]

最初の2つの文字について、私の設定は次のとおりです。sed -i y/\<%\/\]\/ test.htm うまくいきますが、ここでダッシュ文字をどのように追加しますか? 2つ目はこれを行う必要がありますが、sed -i y/\%>\/\]\/ このエラーが発生しましたbash: /]/: is a folder 。助けてもらえますか?

答え1

何を変更したいのかわかりませんが(最初の場合は - または_で)、これは私にとってうまくいきます。

$ echo "<%_" | sed 's/<%_/_/'
_
$ echo "<%_" | sed 's/<%_/-/'
-
$ echo "_%>" | sed 's/_%>/\]/'
]

正規表現識別子(/)をエスケープするようです。

答え2

パラメータを引用し、sコマンドを使用して文字列置換を実行する必要があります。この-eオプションを使用して、複数のコマンド式を提供できます。

sed -i -e 's/<% /[@/' -e 's/ %>/]/' filename

関連情報