2012-03-15 16 views
0

を数時間使用してみてください。通常の文字列では動作しますが、スラッシュを含むURLでは動作しません。sedがファイル内のURLを置き換えて、

/var/www/vhosts/sandbox.modernactivity.co.uk/を何も置き換えようとしていません。

sed 's%var%%' /Volumes/WEB_BACKUP/backups/ukfast/scripts/INCLUDE_list.txt 

は//www/vhosts/sandbox.modernactivity.co.uk/restofurl/を吐くと、元は/var/www/vhosts/sandbox.modernactivity.co.uk/restofurl/ました。スラッシュを認識することができません。

また、ファイルを更新していないようですか?

ヒントありがとうございます!

+0

これは毎週ここで尋ねられます。答えを探して幸運。 – shellter

答えて

1

これはあなたが欲しいものですか?

sed 's#/var.*\.co\.uk/##' file 

テスト:あなたはSEDと、元のファイルを変更したい場合は

kent$ echo "foo/foo/var/www/vhosts/sandbox.modernactivity.co.uk/bar/bar"|sed 's#/var.*\.co\.uk/##' 
foo/foobar/bar 

、-iオプションを追加します。以下のような:

sed -i 's/foo/bar/' file 
+0

yeh私は削除されたsedの#/ var/www/vhosts/## 'が今ではうまくいきたいと思っています。ありがとう!私が-iを使うとエラーが出るので、同じファイルを使うことができないようです。しかし、old.txt> new.txtは結果を新しいファイルに置きます。あなたのお手伝いをありがとう? %または#の定義は何ですか?それが私を混乱させていたと思います... – v3nt

+0

-iは、インプレースバックアップを意味します(変更)はオプションです。それは動作するはずです。 sedのmanページを確認してください。 #は 's'コマンドのためのものです。/../../ 'は##..#..#です。あなたのテキストは "/(スラッシュ)"を持っているので、私はすべてのスラッシュをエスケープしたくありません。 – Kent

+0

ああ - 申し訳ありません。これは変数DIR =/var/www/vhosts /、sedの#$ DIR ## 'で動作しないようです。私は別の区切り記号を使用する必要がありますか? – v3nt

2

試してください:あなたが使用してMac上で作業している場合

find . -name "yourfile.txt" -print | xargs sed -i "" 's/\/var\/www\/.*\.co\.uk//g' 

使用\ '/'

を脱出するそうでなければ、Linux上

-i ""書くだけ-i

+0

おかげさまで - Macのように、-iの後に ""必要です – v3nt

関連する問題