Bir değişkende saklanan Sed değiştirme satırı


0

Başlayan bir satır bulmam ve satırın mysql.unmetric.twt.urltamamını ip değişkeninde saklanan satırla değiştirmem gerekiyor.

ip="mysql.unmetric.twt.url=jdbc:mysql://ec2-a-b-c-d.compute-1.amazonaws.com:3306/unmetric? jdbcCompliantTruncation=false&useUnicode=yes&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true"

Sed kullanarak bu nasıl başarılabilir?



Sed -i "s / ^ mysql.unmetric.all.url / $ ip / g" dosya adı yapmayı denedim ama işe yaramadı. Lütfen yardım eder misiniz
Prashanth Ganesh

Yanıtlar:


1

İki aşama vardır: önce herhangi bir özel karakterden kaçmanız gerekir $ip:

echo $ip|sed 's#[./&?]#\\&#g'

Sonra ikame gerçekleştirmeniz gerekir:

sed -i "s/^mysql\.unmetric\.twt\.url.*$/replacement/g" filename

Birlikte bunlar verir:

sed -i "s/^mysql\.unmetric\.twt\.url.*$/$(echo $ip|sed 's#[./&?]#\\&#g')/g" filename

Ana ikame için çift tırnak işaretinin önemli olduğunu ve yedek dizginin yorumlanacağını unutmayın.


cçok fazla çeviri gerektirmeyen eylemi kullanabilirsiniz (eğer varsa sadece yeni satırlar var, bu durumda değil)
NeronLeVelu 12:15

@NeronLeVelu - "İşlem c" ile ne demek istiyorsun ? Bu komutu bilmiyorum, Ubuntu'da varsayılan olarak kurulu değil ve aranması kolay bir isim değil. Yoksa sed(hangi sürümüm içermez) bir seçenek midir?
AFH

c'içeriği izleyerek satırın içeriğini (aslında çalışma arabelleğini değiştirerek) değiştiren bir eylemdir. Şu anki satırı / içeriği izleyen csatırla değiştirir, yeni futur içerik satırları `` ile değiştirilir, böylece birkaç satır değiştirmek için kullanılabilir.
NeronLeVelu

@NeronLeVelu - Tamam, teşekkürler. Bu komutu kullanmadım, ancak ileride başvurmak için aklımda tutarım.
AFH
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.