2012-02-08 34 views
14

Bir dizeyi joker karakterle değiştirmek istiyorum ancak çalışmıyor.SED ile joker karakterini kullanarak

dize "Bazı-string-8"

Ben

sed -i 's/string-*/string-0/g' file.txt 

yazdı gibi görünüyor ama çıkış

some-string-08 

cevap

25

yıldız olan (*) "sıfır veya daha fazlasını ifade eder önceki öğe ". Eşleşmesini isterseniz herhangi bir dize maç için (yani herhangi bir tek karakteri sıfır veya daha fazla kez) istiyorsanız

herhangi bir tek karakteri Yani

sed -i 's/string-.*/string-0/g' file.txt 
+0

iyi, belki benim sorum tamamlanmamıştı .... senin emriniz bu fien için çalışıyor. Ancak eğer bazı-string-8 -x -command acommand'm varsa, bu komutu yürütme çıktısı '' string-0 '' dır. bundan sonra tüm karakterleri siler. Ben istiyorum bazı string-0 -x - komut acommand' – mahmood

+0

Tamam ilk komut ne istediğimi – mahmood

+0

ne joker yedek dizede kullanmak istiyorsanız ne? örnek: 'AAA ile değiştirin. * BBB' ile 'CCC. * DDD' – user2561747

5

, kavramı kullanmak

sed -i 's/string-./string-0/g' file.txt 

kullanmak Normal İfadelerde bir "joker" biraz farklı çalışır. "Herhangi bir karakteri" eşleştirmek için "." "*" Değiştirici, herhangi bir sayıda eşleşme anlamına gelir.