OS XターミナルからSEDを使用して、検索と置換を実行しようとしています。
テキストファイル全体にこの文字列が散らばっていると想像してください。 http://www.find.com/page
そして、私はそれをこの文字列に置き換えたいと思います: http://www.replace.com/page
文字列で「/」文字を適切にエスケープまたは使用する方法がわからないため、問題が発生しています。たとえば、単に「猫」を見つけて「犬」に置き換えたい場合、次のコマンドが完全に機能することがわかりました。
sed -i '' 's/cat/dog/g' file.txt
猫と犬が「/」文字を含む文字列またはURLを持っている代わりに、同じ機能を達成する方法についてのアイデアはありますか? 「/」文字をエスケープするさまざまな方法を試しましたが、SEDは文字列を「見つける」ことができず、検索および置換アクションを実行できません。
ヘルプやヒントは大歓迎です。
ありがとう!
/
はsed
コマンドのthe区切り文字ではなく、可能なものの1つにすぎません。この例では、たとえば文字列と競合しないため、代わりに,
を使用できます。
echo 'I think http://www.find.com/page is my favorite' |
sed 's,http://www.find.com/page,http://www.replace.com/page,g'
sed
は、「s」に続くものを区切り文字として使用できます。 URL
を使用しているため、置換が終了して置換が開始されるときにsed
を混同しないように、/
以外の異なる区切り文字を使用することをお勧めします。
しかし、あなたも間違いなく/
を使用できると言っていました。リテラル/
をエスケープする必要があります。
そのため、次のいずれかを実行できます。
sed 's/http:\/\/www.find.com\/page/http:\/\/www.replace.com\/page/g' input_file
または、別の区切り文字を使用して、暗号化されたsedの暗号化を回避します。
sed 's#http://www.find.com/page#http://www.replace.com/page#g' input_file