Bash Dizeden Son x Karakteri Kaldır

Bash Remove Last X Characters From String



Bazen bir dizgedeki harflerin silinmesi gerekebilir. Durum ne olursa olsun, Linux, Bash'de böyle bir metinden harfleri çıkarmak için birkaç yerleşik, kullanışlı araç içerir. Bu makale, bu yöntemleri kullanarak bir dizeden harflerin nasıl silineceğini gösterir. Bu gönderide, talimatlar Ubuntu 20.04 Focal Fossa'da çalıştırıldı. Aynı talimatlar, yukarıda belirtilen yardımcı programların kurulu olduğu herhangi bir Linux sisteminde çalıştırılabilir. Talimatları uygulamak için normal Terminal'i kullanacağız. Ctrl+Alt+T kısayolu, Terminal aracını açacaktır.

Yöntem 01: Alt Dizi Yolu

Bir dizgiden harfleri veya karakterleri kaldırmak için ilk yöntemimiz, daha çok orijinal bir dizgeden bir alt dizgi oluşturmaya benzer. Bu arada terminal açıldı bile; bash kodumuzu eklemek için bir bash dosyası oluşturacağız. Böylece içinde karakter çıkarma veya alt dizi oluşturma yapabiliriz. Bu nedenle, bir bash dosyası oluşturmak için kabuğumuzdaki yerleşik dokunmatik talimatı kullandık.









Dosya, Ubuntu 20.04'ün ana klasöründe hızlı bir şekilde oluşturulduğundan, düzenlemek için bir düzenleyicide açın. Bu yüzden aşağıdaki gibi file.sh belgesini açmak için GNU düzenleyicisini seçiyoruz.







Aşağıda gösterilen kodu içine kopyalayın. Bu kod, başlangıçta bash uzantısını içerir ve bundan sonra, bir dize değeri olan bir dize değişkeni val bildirdik. Diğer satırda, bu değişkeni terminalde görüntülemek için yankı ifadesini kullanıyoruz. Asıl görev buradan başlıyor. Yeni bir değişken başlattık ve ona orijinal değişken val'nin bir alt dizisi olan bir değer atadık. Çift kolondan sonra parantezlerde -14'ü belirterek yaptık. Bu, derleyiciye, orijinal FirstWorldCountries dizesinden son 14 harfi kaldırması gerektiğini söyler. Kalan harfler new değişkenine kaydedilecektir. Son satırda, yeni yeni değişkeni yazdırmak için yankı kullanılmıştır.



Bir file.sh dosyasının bash komutunu kullanarak düzgün şekilde yürütülmesi beklendiği gibi çıkıyor. İlk olarak, ilk dize değişkeni val'in değerini görüntüler ve bundan sonra, gösterilen çıktıya göre ilk değişkenden yeni oluşturulan dizenin değerini görüntüler.

Yöntem 02: Özel Sembolleri Kullanma

Herhangi bir dizeden son harfleri veya karakterleri kaldırmanın bir başka basit ve kolay yöntemi, özel semboller veya karakterler, örneğin yüzde ve soru işareti sembolleridir. Bu sefer karakterleri herhangi bir dizgeden çıkarmak için yüzde ve soru işareti kullanacağız. Bu nedenle, bir GNU Nano düzenleyici kullanarak bash betiğini güncellemek için aynı dosyayı zaten açtık. Genel kod aynıdır, ancak değişken yeni kısım biraz farklıdır. Belirtilen soru işareti sayılarının, bu yüzde işaretinden sonra kaldırılacak bir val değişkenindeki karakter sayısını temsil ettiğini sisteme bildirmek için bir yüzde işareti kullandık. 9 soru işareti sembolü eklediğimizi görebilirsiniz. Bu, FirstWorldCountries dizesindeki son 9 karakterin kaldırılacağı ve kalan dizenin FirstWorld olacağı anlamına gelir. Bu kalan dize daha sonra yeni bir değişkene kaydedilecektir.

Güncellenen bash dosyasını çalıştırdığımızda çıktı beklendiği gibi gelir. İlk değişkenden orijinal dizeyi ve val değişkeninden oluşturulan yeni ikinci değişkenin değerini gösterir.

Yöntem 03: Sed'i Kullanma

Sed, metin dizilerini değiştirmek için kullanışlı ve etkili bir araçtır. Bu, veri girişiyle çalışmanıza ve basit metin dönüştürmeleri yapmanıza olanak tanıyan etkileşimli olmayan bir geliştirme ortamıdır. Ayrıca, istemediğiniz metinlerdeki harfleri silmek için sed kullanabilirsiniz. Örnek bir dize kullanacağız ve onu gösterim amacıyla sed komutuna yönlendireceğiz. Belirli bir karakteri sed ile bir tür dizgeden silebilirsiniz. Böylece, echo deyiminde bir dizgenin basit satırını kullandık. Bahsedilen dizeden A harfini çıkarmak için sed kullandık. 's/string_to_be_removed//' sözdizimini izlediğinizden emin olun. Çıktı, A harfinin kaldırıldığını gösterir.

Aksa kelimesinin tamamını çıkarmak için, eksik harfleri temsil etmek için içinde noktalar bulunan bir kelimenin ilk ve son karakterinden bahsettik. Çıktı, Aqsa kelimesinin kaldırılmasıyla dizeyi gösterir.

Bir dizeden herhangi bir sayıda son karakteri çıkarmak için, gösterildiği gibi dolar simgesinden önce ihtiyacınıza göre nokta sayısını belirtin.

Yöntem 04: Awk Kullanma

Awk, kalıpları eşleştirmek ve metinleri işlemek için kullanılabilecek gelişmiş bir betik dilidir. Awk'yi girdiyi çeşitli farklı şekillerde kaydırmak ve değiştirmek için kullanabilirsiniz. Ayrıca awk kullanarak dizelerdeki harfleri de silebilirsiniz. Awk, sed'den biraz farklı görünüyor. Bu sefer Aqsa Yasin ile ipi değiştirdik. awk işlevi, substr yöntemiyle alt dize oluşturacak ve onu terminalde yazdıracaktır. İşlev uzunluğu, belirtilen dizeden kaldırılan harf sayısını göstermek için kullanılmıştır. Burada uzunluk($0)-5, bir dizenin son 5 karakterini kaldırmak anlamına gelir ve kalan, yazdırılacak bir alt dizenin parçası olacaktır.

Bir Aqsa Yasin dizisinden son 9 karakteri çıkarmaya çalıştık ve çıktı alt dizisi olarak A'yı aldık.

Yöntem 05: Kesimi Kullanma

Cut, böyle bir ifadeden veya belgeden bir metin parçasını çıkarmak ve standart çıktıya yazdırmak için bir komut satırı yardımcı programı gibi görünüyor. Bu işlem aynı zamanda bir tür dizgeden harfleri çıkarmak için de kullanılabilir. Örnek bir cümle kullanacağız ve onu test amacıyla kesim talimatına ileteceğiz. Bu yüzden Aqsa Yasin ifadesini kullandık ve kesim sorgusuna geçtik. –c bayrağından sonra, belirtilen bir karakter dizisinden karakterleri kesmek için bir dizi için dizin aralığını tanımladık. Dizin 1'den dizin 5'e kadar olan karakterleri gösterecektir. Dizin 5 burada hariç tutulmuştur. Çıktı ilk 4 karakteri Aksa olarak gösterir.

Bu sefer kesme talimatını farklı kullanacağız. Dizeyi tersine çevirmek için rev işlevini kullandık. Bir dizenin tersinden sonra, bir dizeden ilk karakteri keseceğiz. -c2- bayrağı, alt dizgimizin 2 karakterinden sonra olacağı anlamına gelir. Bundan sonra, dizeyi geri almak için ters işlevi tekrar kullanılır. Böylece, bu sefer son karakterin kaldırılmasıyla orijinal dizgiyi geri aldık.

Son 7 karakteri kaldırmak için, ters işlevini de kullanırken cut komutunda -c7-'den bahsetmeniz yeterlidir.

Çözüm:

Linux'ta temel bir görevi yapmak için birden fazla yöntem vardır. Benzer şekilde, bir metinden karakterleri silmek de mümkündür. Bu makale, bazı örneklerin yanı sıra, bir dizedeki istenmeyen karakterleri ortadan kaldırmak için beş farklı yöntem gösterdi. Hangi aracı seçerseniz seçin, tamamen seçiminize ve daha da önemlisi neyi başarmak istediğinize bağlıdır.