我必须查看jsp文件并查找字符串loginpage.jsp并替换为../loginPage.jsp。 我试过以下: 第一次尝试:
sed -i -e 's/<a id="logo" href="loginPage.jsp"><span class="alt">abc</span> </a>/<a id="logo" href="../loginPage.jsp"><span class="alt">abc</span></a>/g'
第二次尝试:
SRC="'loginPage.jsp'"
DEST="'sub2/loginPage.jsp'"
sed -i "s/$SRC/$DEST/g" <file path>/test1.jsp
第3次尝试使用行号是文件
var="response.sendRedirect("sub2/loginPage.jsp");"
sed "19 s/.*/$var/" <file path>/test1.jsp
你能指导我如何实现这个目标吗? 谢谢,
答案 0 :(得分:1)
由于您的输入文本也有斜杠,您应该转义输入中的所有斜杠或使用其他分隔符,例如,尝试这些:
sed 's#<....>#replacement#g' file
或
sed -i "s#$SRC#$DEST#g" <file path>/test1.jsp
答案 1 :(得分:1)
据我所知,你的主要问题是在sed命令中使用/作为分隔符。 在sed中你几乎可以使用任何角色,所以 sed“s-aa-bb - ”工作正常。在你的情况下,因为替换有一个/ sed本身会受到限制,而其余的字符串都不会被解析。
来自sed的手册:
\ <强> C 强> 的regexp <强> C 强>
Match lines matching the regular expression regexp. The c may be any character
答案 2 :(得分:0)
除了Kent和chapuzzo提到的分隔符问题, 我怀疑你引用的方式也可能是问题所在。 如果您正在使用'sed'版本,则特别相关 这与我们都在使用的不一样。
这种简单的方法对我有用(Ubuntu,标准gnu sed):
% cat foo3
<a id="logo" href="loginPage.jsp"><span class="alt">abc</span>
% sed -e 's=loginPage.jsp=sub2/loginPage.jsp=' < foo3
<a id="logo" href="sub2/loginPage.jsp"><span class="alt">abc</span>
% sed --ver
GNU sed version 4.2.1
还有一个PS,不清楚你为什么使用-i flag,它可能会 不要做你的想法/期望。