2

これを含むファイルがあり、<!-- CordovaVersion --> 置き換えたい<script src="cordova-1.7.0.js" type="text/javascript"></script>

私は試した

sed 's/"<!-- CordovaVersion -->"/"<script src="cordova-1.7.0.js" type="text/javascript"></script>"/g' junk4 > junk4_modified

しかし、うまくいかないようです。何か助けてください。

4

4 に答える 4

4

/の代わりに#などの他の文字を区切り文字として使用します。

sed 's#<!-- CordovaVersion -->#<script src="cordova-1.7.0.js" type="text/javascript"></script>#g' junk4 > junk4_modified
于 2012-06-07T08:53:26.077 に答える
2

まず第一に、LiKao"が言ったように余分な sは必要ありません。次に、sed が何を何に置き換えるかを理解する方法を知る必要があります。

s/this/that/flags

これは、追加のフラグで置換することthisを意味しますthat(たとえば、すべてのg場所を意味します)。実際、は特殊文字ではありません。scaiが言ったよう/に、他の文字を使用できます。#

s#this#that#flags

しかし、何が問題だったのですか?に置き換えたいと想像してthisくださいth/at。次に、sedはこれを見ます:

s/this/th/at/flags

そして当然混乱します。に置き換えようとしてthisthますか? とはどういうat/flags意味ですか? に置き換えようとしてthis/thatますか? それともthis一緒th/atですか?言う方法はありません。

そのため、特殊文字を . でエスケープする必要があります\。区切り文字として使用/したため、区切り文字でない場合はエスケープする必要があります。

sed 's/<!-- CordovaVersion -->/<script src="cordova-1.7.0.js" type="text\/javascript"><\/script>/g' junk4 > junk4_modified

(もちろん、 # と内部を使用した場合、thisまたはthatがあった#場合はエスケープする必要があります#)

特殊文字を含むsedの詳細については、こちらを参照してください。

于 2012-06-07T09:23:52.827 に答える
1

この行を使用して、sedは検索し、。"<!-- CordovaVersion -->"に置き換えようとし<script src="cordova-1.7.0.js" type="text/javascript"></script>"ます。ただし、元のドキュメントには。が含まれていません"。sedコマンドからそれらを削除するだけです。

于 2012-06-07T08:54:20.163 に答える
1

sed 's/<!--\s*CordovaVersion\s*-->/<script src="cordova-1.7.0.js" type="text\/javascript"><\/script>/g' junk4 > junk4_modified

于 2012-06-07T08:54:08.697 に答える