Özel karakterleri değiştirmek için sed kullanma


14

Bu , bir dosyada değiştirilecek tomşekilde çalışır sam:

sed 's/tom/sam/g' file_1 > file_2

Ancak bu şunları yapmaz:

sed 's/*****/sam/g' file_1 > file_2

Özel karakterleri *****kelimeyle değiştirmek için sam. Ben eğik çizgi \*ama hatalarla denedim .


2
Hangi komutu denediniz \*ve hangi hataları aldınız?
cuonglm

denedim: sed 's / **** / sam / g' test.txt> test2.txt ve hata sonuçları: sed: kötü regex '*****': Geçersiz önceki düzenli ifade - bu var blackslash \ * öncesi
Rosebud

1
Her özel karakterden kaçmayı deneyebilirsiniz:sed 's/\*\*\*\*\*/sam/g'
taliezin

Yanıtlar:


18

Özel karakterlerden, özel karakterin \önünde ters eğik çizgi ile kaçmanız gerekir , örneğin:

sed 's/\*/t/g' test.txt > test2.txt


0

Özel karakterlerin \önünde ters eğik çizgi bulunan özel karakterlerden kaçmanız gerekir . Durumunuz için, ters eğik çizgi ile her özel karakter kaçmak \.

Örneğin: **** boy is ****

sed 's/\*\*\*\*/sam/g' filename

ans:

sam boy is sam
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.