文字列に「http://」がある場合、sedはどのように置き換えますか?

文字列に「http://」がある場合、sedはどのように置き換えますか?

xx次の内容を含むファイルがあります。

@base_url = "http://dmstaffing-stage.herokuapp.com/"

私はこの行を削除するためにsedを使用したいと思います(何も置き換えません)。私はこのsed技術を次のようないくつかの異なるラインでうまく使用しました。

sed -i 's/require "selenium-webdriver"//' xx

しかし、@base_url行を使った試みはうまくいきません。 http://の"または//が混乱しているようですが、修正できないようです!

私は試した:

$ sed  's/@base_url = "http://dmstaffing-stage.herokuapp.com/"//' xx
sed: -e expression #1, char 23: unknown option to `s'

$ sed  's/@base_url = \"http://dmstaffing-stage.herokuapp.com/\"//' xx
sed: -e expression #1, char 24: unknown option to `s'

$ sed  's/@base_url = "http:\/\/dmstaffing-stage.herokuapp.com/"//' xx
sed: -e expression #1, char 58: unknown option to `s'

しかし、それらのどれも働かなかった。

答え1

前述のように、別の区切り文字を使用するか、脱出する削減。最後の試みで最後のスラッシュをエスケープできませんでした。

指摘したとおりツイートをサイトに埋め込むdot脱出も同様です。

そして含む@テデンsed必要でない場合は、正規表現の代わりに固定文字列が選択されますgrep -Fxv。行全体と一致することを確認してください。ひっくり返す-F-x-v

しかし、単純な(非常に簡単な)ベンチマークがtime -vより人気があるようですsed。 (GNUバリアント。)

sed 's/@base_url = "http:\/\/dmstaffing-stage\.herokuapp\.com\/"//' xx

空白行を残さずに完全に削除するには、次のようにします。

sed '/@base_url = "http:\/\/dmstaffing-stage\.herokuapp\.com\/"/d' xx
                                                                |
                                                                +--- Delete

答え2

別の区切り記号を試してください。

sed  's|@base_url = "http://dmstaffing-stage.herokuapp.com/"||' xx

答え3

正規表現のスラッシュは sed の区切り文字を混乱させます。しかし、あなたは使用することができます異なる区切り記号スラッシュより。たとえば、

sed  's#@base_url = "http://dmstaffing-stage.herokuapp.com/"##' xx

答え4

たとえば、スラッシュを避けることができますsed -e 's/"@base_url = "http:\/\/dmstaffing-stage.herokuapp.com\/"/d'。このジャングルは、/\/\//\//LTS(傾いたつまようじ症候群)という症状です。この問題を解決するための最良の方法は、;あなたの場合のように他の区切り文字を使用するか、現在好みの英数字以外の文字を使用することです(明らかに念頭に置いている損傷には含まれません)。

関連情報