Bir dizinde, farklı dosyalara sahip çok sayıda alt alt dizin vardır. Dize manipülasyonu sadece bir dosya türünde (ör. * .c) yürütülür.Tüm alt dizinlerdeki dosyaların bir alt kümesindeki dizelerin bash özyinelemeli yürütmesi
[text][string before specific underscore]_[string after specific underscore]_[string rest][text]
- [metin] [a-z], [A-Z], [0-9], _ ya da alan olabilir:
I manipüle etmek istiyorum dize, aşağıdaki yapıya sahiptir.
- [belirli alt çizgiden önceki dize] [a-z], [A-Z], [0-9] olabilir.
- [belirli alt çizgi sonra] bilinir. 'MOVE' olduğunu varsayalım.
- [string rest] [a-z], [A-Z], [0-9] veya _ olabilir.
[text][string after specific underscore]_[string before specific underscore]_[string rest][text]
Örnek bir c dosyasının:
h_a1Ha MOVE_Ab1_rest h _4Aihi bl_aa abc123ABC_MOVE_rest bl_ub blu_b abcABC_MOVE_rest bla_a foo _o Abc_MOVE_rest tes _t
ben değiştirmek istiyorum
Amacım iki dizeleri sol ve sağ birinci alt çizgi ile değiştirmektir İlk alt çizgi öncesi ifadeye sahip MOVE:
h_a1Ha MOVE_Ab1_rest h _4Aihi
bl_aa MOVE_abc123ABC_rest bl_ub
blu_b MOVE_abcABC_rest bla_a
foo _o MOVE_Abc_rest tes _t
tüm ifadeler ilk alt çizgi öncesinde bilinen bu çalıştığında:
find . -name "*.c" -exec sed -i "s/abc123ABC_MOVE_/MOVE_abc123ABC_/g" '{}' \;
find . -name "*.c" -exec sed -i "s/abcABC_MOVE/MOVE_abcABC/g" '{}' \;
find . -name "*.c" -exec sed -i "s/Abc_MOVE_/MOVE_Abc_/g" '{}' \;
Nasıl bu dize kullanımı yapabileceğiniz ilk altını önce açıkça dize yazmadan? Ben bu belirteç
_MOVE_ (_MOVE shall be also sufficient, I guess.)
arar öncesi ve birinci alt çizgi sonra ne değiştiren bir normal ifade gerek.
Soru 2: Bir söz sorunu çözmek için nasıl bir fikri varsa
mükemmel olurdu.
h_a1Ha MOVE_Ab1_rest h _4Aihi
bl_aa MOVE_abc123ABC_rest bl_ub
blu_b MOVE_abcABC_rest bla_a
foo _o Abc_MOVE_rest tes _t
Teşekkür ve şerefe,
David
Bu durumda, sizin için karakter. 1 sınıflarını tanımlamak daha güvenilir olmalıdır. – SLePort
Mükemmel! ederiz ! Eğer –
@Kenavoz aslında ben sadece en basit ifade yazabilirsiniz böylece RE acemi değilim, teşekkürler: P –