Bir satırda bir satırda bir satırın (av veya avpgw) ile başlaması ve bunları yeni metinle değiştirin, sadece yeni metni en baştan girin.Sed komutu: sadece varsa ek nasıl değiştirilir?
Bunu sed kullanarak nasıl yapabilirim?
Bir satırda bir satırda bir satırın (av veya avpgw) ile başlaması ve bunları yeni metinle değiştirin, sadece yeni metni en baştan girin.Sed komutu: sadece varsa ek nasıl değiştirilir?
Bunu sed kullanarak nasıl yapabilirim?
Sen bu şekilde yapabilirsiniz:
sed -e 's/^avpgw/new text/' -e t -e 's/^av/new text/' -e t -e 's/^/new text/' file
Bu (/// s) new text
ile desen değiştirir ve sonunda (t) atlar. Aksi halde bir sonraki deseni dener. Ayrıca bkz. sed commands summary.
sed 's/^avpgw/new text/; t; s/^av/new text/; t; s/^/new text/' file
veya sed komut dosyası komutları koymak:
Ayrıca ;
ile komutları ayırabilirsiniz bu şekilde
s/^avpgw/new text/
t
s/^av/new text/
t
s/^/new text/
ve diyoruz:
sed -f commandfile file
Davayı görmezden gelmek istiyorsanız,numaralı gibi ikame komutunun sonuna bir i ekleyin.. Başka bir yol, s/^[aA][vV]/new text/
karakter kümeleriyle hecelemek. Ancak bu, sed
spesifik değildir, bunun için genel olarak normal ifadeleri arayabilirsiniz.
sen (GNU sed) Bu işe yarayabilecek: Yanıtınız için
sed -r 's/^av(pgw)?.*/replacement/;t;s/^/replacement /' file
(pgw) {, 1} 'daha iyi olur muydu? –
@JanitoVaqueiroFerreiraFilho iyi nokta. GNU sed ayrıca, aynı 0 veya 1 anlamına gelen isteğe bağlı meta karakterde '' 'sağlar. Fakat eğer dize 'avpgwpgw'' diye bir şans yoksa * iyidir. – potong
Teşekkürler! Sanırım hepsi ne kadar güvenebileceğimize bağlıdır =) –
teşekkürler. Mükemmel çalıştı. Durumun duyarsız olması için bir yol var mı. Av, AV, av vb. Hepsi değiştirilmelidir. – user1765709
@ user1765709 Karakter kümelerini kullanabilir veya bir değiştirici ekleyebilirsiniz. Değiştirilmiş cevabımı görün. –
Ben centos'um ve bu işe yaramıyor. herhangi bir fikrin neden? – Dobler