文字列に「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

おすすめ記事