Bir dize bir sed için kaçış desen değiştirin
Benim bash komut sed desen kullanmalıyım (hangi kullanıcıdan alınan) harici bir dize var.
REPLACE="<funny characters here>"
sed "s/KEYWORD/$REPLACE/g"
Nasıl güvenli bir şekilde edebi bir yedek olarak sed
kabul olur $REPLACE
dize kaçış miyim?
NOT:KEYWORD
vb maçları hayır, aptal bir dize. Kullanıcı tarafından sağlanan değil.
CEVAP
PEZ kabul ettiği cevap downvoting için üzgünüm, ama her şey kaçmak kötü bir fikir. Sed birçok karakter için kaçak olması gerekirolsunözel bir anlamı. Yedek dize bir basamak kaçış, örneğin, a ile başlıyor teslim edecektir.
Ben Boş dedi, değiştirme dizesinde kaçtı gereken sadece üç karakter (kendilerini, ileri deyim sonu için ve & Tümünü değiştir için kaçar eğik çizgi) vardır:
sed -e 's/[\/&]/\\&/g'
Eğer hiç KEYWORD
dize kaçmak için gerekiyorsa, Aşağıdakilere ihtiyacınız vardır:
sed -e 's/[]\/$*.^|[]/\\&/g'
Ek:Eğer bir karakteri ayırıcı olarak /
dışında kullanırsanız unutmayın, bedeli yukarıdaki ifadelerde eğik çizgi yerine kullandığınız karakter gerekir. PeterJCLaw açıklaması yorum bakın.
Anahtar KELİME türevi için düzeltme 1:Eklenen iki karakter Peter.O söz, ve(' ve ')'.'
Anahtar KELİME türevi için düzeltme 2:(' Ve ')' yine. ' kaldırıldı Bunları eklediğim zaman ne düşünüyordum bilmiyorum. Teşekkürler, Jesse.
'T java için tarihi bir dize ayrı...
Ruby: bir desen için dosya metin Arama...
Nasıl dize bir normal ifade giriş için...
Kasa GİBİ bir ifade kullanmak için, SQ...
Okuma/bir Dize için bir İnputStream dö...