Sed: 特殊文字の正しいエスケープ

Sed: 特殊文字の正しいエスケープ

sed次のコマンドを作成しようとしています。v=window.location.search.matchファイルを検索して次に置き換えようとしています。<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>

これが私が今まで持っているものです:

sed -i.bak 's/v=window.location.search.match/\<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"\>\</script\>/d' myfile.txt

このコマンドを実行した後、次のエラーが発生します。

sed: -e expression #1, char 49: unknown option to `s'

誰もが逃げるためにどこに置くべきか混乱しています\

ベストアンサー1

@Babyyが指摘したように、式に/文字が含まれていると、区切り文字をsed入力ファイルに見つからない区切り文字に変更する危険があります|_

sed -i.bak 's|v=window.location.search.match|<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>|' myfile.txt

行全体を置き換えるには、式の最初の部分が行の先頭から最後まですべてに一致する必要があります。

sed -i.bak 's|^.*v=window.location.search.match.*$|<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>|' myfile.txt

おすすめ記事