2010-01-18 20 views
6

0 ile arama ve değiştirme yapmak istiyorum ve & gibi bazı özel semboller içeren bir değişkendeki bir şeyle değiştirin.with with in

sed "s|http://.*|http://$URL|" 

URL=1.1.1.1/login.php?user=admin&pass=password:

Mesela ben böyle bir şey yapmış. Bir sorun oluştuğunu düşünüyorum çünkü ? ve & değişkenimi kullanıyorum.

Aramamı nasıl yapabilirim ve değiştirebilirim? Yerine önceden

cevap

1

? yılında

Teşekkür bir sorun değildir. &'un \& olarak atlanması gerekiyor.

+1

evet ben biliyorum. Ama değişkeni ekleyemiyorum (veya başka bir regexp ile nasıl yapılacağını bilmiyorum) – pl0nk001

+0

Ne değişkenden bahsediyorsunuz? Kaçmak isterseniz \ bunun gibi yapmalısınız. \. – kjagiello

+2

muhtemelen URL'nin dinamik olarak üretildiği ve ters eğik çizgiyi el ile ekleyemeyeceği anlamına gelir.Daha fazla rutinin kaçması & programlı olarak kodlanması gerekir – ghostdog74

1

şu (a bash komut dosyası) benim için çalıştı:

URL="1.1.1.1/login.php?user=admin\\&pass=password" 

echo "http://something" | sed -e "s|http://.*|http://$URL|" 

çıkışı oldu:

http://1.1.1.1/login.php?user=admin&pass=password 
+0

Bence OP ters eğik çizgi el ile ekleyemiyorum – ghostdog74

+0

Hmm, Sanırım haklısın, ama bu dönüşe geri dönmem gerekecek, geç oluyor – pavium

1

kullanım awk

URL="1.1.1.1/login.php?user=admin&pass=password" 
awk -vurl="$URL" '/http:\/\//{ gsub("http://" , "http://"url) }1' file 

ama sen sadece gerçekten emin http: // yerine koymak ister misiniz?

+0

awk bir ve "sed" ile aynı şeyi yapar. –

0
$ URL="1.1.1.1/login.php?user=admin&pass=password" 
$ echo "http://abcd" | sed -e "\|http://.*|c$URL" 
1.1.1.1/login.php?user=admin&pass=password 
2
URL="1.1.1.1/login.php?user=admin&pass=password" 
URL=$(echo "$URL" | sed 's/&/\\&/') # substitute to escape the ampersand 
echo "$OTHER" | sed "s|http://.*|http://$URL|"