我必须使用 shell 替换特殊字符,所以我使用 sed 但我有一些我不明白的错误。
<%_ by [@, ("_" = dash)
_%> by ]
对于前 2 个字符,我的合成是:sed -i y/\<%\/\]\/ test.htm
它可以工作,但是这里我如何添加破折号字符?第二个应该是这样,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