0

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' 

2回目の試行:

    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

これを達成する方法を教えてください。ありがとう、

4

3 に答える 3

1

私が見る限り、あなたの主な問題は / を sed コマンドの区切り文字として使用していることです。sed では、この目的のためにほとんどすべての文字を使用できるため、sed "s-aa-bb-"は正常に機能します。あなたの場合、置換には / sed があるため、混乱し、残りの文字列は解析されません。

sedのマニュアルから:

\ c正規表現c

         Match lines matching the regular expression regexp.  The  c  may  be  any
         character
于 2013-08-16T21:15:22.470 に答える
1

入力テキストにもスラッシュが含まれているため、入力内のすべてのスラッシュをエスケープするか、別のセパレーターを使用する必要があります。たとえば、次のようにしてください。

sed 's#<....>#replacement#g' file

また

sed -i "s#$SRC#$DEST#g" <file path>/test1.jsp
于 2013-08-16T21:13:03.397 に答える
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 フラグを使用しているのかは明らかではなく、あなたが考えている/期待していることをしていない可能性があります。

于 2013-08-16T21:29:06.247 に答える