Linux'ta Bash'de Dizeler Nasıl Manipüle Edilir

Yayınlanan: 2022-07-28
Dizüstü bilgisayar ekranında Linux komut satırı.
fatmawati achmad zaenuri/Shutterstock.com

Linux'un iyi donanımlı olduğu bir şey varsa, o da dizileri manipüle etmek için kullanılan araçlardır. Ancak, Bash kabuğunun içine yerleştirilmiş bir dizi işlevsellik de vardır. İşte nasıl kullanıldığı.

dize Manipülasyonu

Linux ekosistemi, metin ve dizelerle çalışmak için harika araçlarla doludur. Bunlar awk, grep, sed ve cut'ı içerir. Herhangi bir ağır metin tartışması için, bunlar sizin tercihiniz olmalıdır.

Ancak bazen, özellikle kısa ve basit bir komut dosyası yazarken, kabuğun yerleşik yeteneklerini kullanmak uygundur. Komut dosyanız başkalarıyla paylaşılacaksa ve onların bilgisayarlarında çalışacaksa, standart Bash işlevini kullanmak, diğer yardımcı programların varlığını veya sürümünü merak etmenize gerek olmadığı anlamına gelir.

Özel yardımcı programların gücüne ihtiyacınız varsa, elbette bunları kullanın. Bunun için oradalar. Ancak genellikle senaryonuz ve Bash işi kendi başlarına halledebilir.

Bash yerleşikleri oldukları için bunları komut dosyalarında veya komut satırında kullanabilirsiniz. Bunları bir terminal penceresinde kullanmak, komutlarınızı prototiplemenin ve sözdizimini mükemmelleştirmenin hızlı ve kolay bir yoludur. Düzenleme, kaydetme, çalıştırma ve hata ayıklama döngüsünden kaçınır.

Dize Değişkenleri Oluşturma ve Çalışma

Bir değişken bildirmek ve ona bir dizge atamak için tek ihtiyacımız olan, değişkeni adlandırmak, eşittir işaretini = kullanmak ve dizgeyi sağlamaktır. Dizenizde boşluk varsa, tek veya çift tırnak içine alın. Eşittir işaretinin her iki tarafında da boşluk olmadığından emin olun.

 my_string="Merhaba, Nasıl Yapılır Geek Dünyası."
 echo $my_string 

Bir dize değişkeni oluşturma ve yazma

Bir değişken oluşturduğunuzda, bu değişken adı kabuğun sekme tamamlama sözcükleri listesine eklenir. Bu örnekte, “my_” yazıp “Sekme” tuşuna basmak, komut satırına tam adı girdi.

Salt Okunur Değişkenler

Değişkenleri bildirmek için kullanabileceğimiz bir declare komutu vardır. Basit durumlarda, buna gerçekten ihtiyacınız yoktur, ancak onu kullanmak, komutun bazı seçeneklerini kullanmanıza izin verir. Muhtemelen en çok kullanacağınız seçenek -r (salt okunur) seçeneğidir. Bu, değiştirilemeyen salt okunur bir değişken oluşturur.

 beyan -r read_only_var="Bu değişmez bir dizedir!"

Buna yeni bir değer atamaya çalışırsak başarısız olur.

 read_only_var="Yeni bir dize..." 

Salt okunur bir dize değişkeni değiştirilemiyor

Terminal Penceresine Yazma

Echo veya printf kullanarak terminal penceresine birkaç dize yazabiliriz, böylece tek bir dizeymiş gibi görünürler. Ve biz kendi string değişkenlerimizle sınırlı değiliz, komutlarımıza ortam değişkenlerini dahil edebiliriz.

 user_account="Kullanıcı hesabınız:"
 echo $user_account $USER 

Terminal penceresine tek bir dizeymiş gibi iki dize yazmak

Birleştirme Dizeleri

Artı eşittir operatörü, += , iki dizeyi birlikte "eklemenize" izin verir. Birleştirme denir.

 user_account="Kullanıcı hesabınız:"
 user_account+=$KULLANICI
 echo $user_account 

+= ile dizeleri birleştirme

Birleştirilmiş dizeler arasına otomatik olarak boşluk eklenmediğini unutmayın. Boşluğa ihtiyacınız varsa, ilk dizenin sonuna veya ikincinin başına açıkça bir tane koymanız gerekir.

 user_account="Kullanıcı hesabınız: "
 user_account+=$KULLANICI
 echo $user_account 

İki dizeyi birleştirmek için += kullanmadan önce fazladan bir boşluk ekleme

İLGİLİ: Linux'ta Bash'te Ortam Değişkenleri Nasıl Ayarlanır

Kullanıcı Girişini Okuma

İçerikleri bildirimlerinin bir parçası olarak tanımlanmış dize değişkenleri oluşturmanın yanı sıra, kullanıcı girdisini bir dize değişkeninde okuyabiliriz.

read komutu kullanıcı girdisini okur. -p (istem) seçeneği, terminal penceresine bir bilgi istemi yazar. Kullanıcının girdisi string değişkeninde saklanır. Bu örnekte, değişkenin adı user_file .

 read -p "Hangi dosyayı aç?" user_file
 echo $kullanıcı_dosyası 

Kullanıcı dizesi girişini okuma

Girdiyi yakalamak için bir dize değişkeni sağlamazsanız, çalışmaya devam edecektir. Kullanıcı girişi REPLY adlı bir değişkende saklanacaktır.

 read -p "Hangi dosyayı aç?"
 yankı $CEVAP 

Bir dize değişkeni sağlamadan kullanıcı girdisini okuma

Kendi değişkeninizi sağlamak ve ona anlamlı bir ad vermek genellikle daha uygundur.

Dizeleri Manipüle Etme

Artık, oluşturma sırasında tanımlanmış, kullanıcı girdisinden okunmuş veya dizeleri birleştirerek oluşturulmuş dizgelerimiz olduğuna göre, onlarla bir şeyler yapmaya başlayabiliriz.

Dize Uzunluğunu Bulma

Bir dizgenin uzunluğunu bilmek önemli veya faydalıysa, onu değişken adının önüne bir hash “ # ” sembolü koyarak alabiliriz.

 my_string="Bu dizide 39 karakter var."
 yankı ${#my_string} 

Bir dizenin uzunluğunu alma

Alt Dizeleri Karakter Ofsetlerine Göre Çıkarma

Dize içinde bir başlangıç ​​noktası ve isteğe bağlı bir uzunluk sağlayarak bir dize değişkeninden bir alt dize çıkarabiliriz. Bir uzunluk sağlamazsak, alt dize başlangıç ​​noktasından son karaktere kadar her şeyi içerecektir.

Başlangıç ​​noktası ve uzunluk, aralarında iki nokta üst üste “ : ” olacak şekilde değişken adını takip eder. Bir dize değişkenindeki karakterlerin sıfırdan başlayarak numaralandırıldığına dikkat edin.

 long_string="Frankenstein veya Modern Prometheus"
 alt dize=${uzun_dize:0:12}
 yankı $alt dize
 echo ${long_string:27} 

Bir dizenin başından ve sonundan alt dizeleri çıkarma

Başka bir varyasyon, dizenin sonundaki birkaç harfi atmanıza izin verir. Etkili bir şekilde, bir başlangıç ​​noktası belirlemenize ve uzunluk olarak negatif bir sayı kullanmanıza olanak tanır. Alt dize, başlangıç ​​noktasından dizenin sonuna kadar olan karakterleri, eksi negatif sayıda belirttiğiniz karakter sayısını içerecektir.

 my_string="alfabetik"
 echo ${my_string:5:-4} 

Bir dizenin ortasından bir alt dize çıkarma

Her durumda, orijinal dize değişkenine dokunulmaz. "Çıkarılan" alt dize aslında değişkenin içeriğinden kaldırılmaz.

Sınırlayıcıya Göre Alt Dizeleri Çıkarma

Karakter ofsetlerini kullanmanın dezavantajı, ayıklamak istediğiniz alt dizelerin dize içinde nerede olduğunu önceden bilmeniz gerekmesidir.

Dizeniz yinelenen bir karakterle sınırlandırılmışsa, dizede nerede olduklarını veya ne kadar uzun olduklarını bilmeden alt dizeleri çıkarabilirsiniz.

Dizenin önünden arama yapmak için, değişken adını çift yüzde işaretleri, %% , sınırlayıcı karakter ve bir yıldız işareti, * ile takip edin. Bu dizedeki sözcükler boşluklarla sınırlandırılmıştır.

 long_string="birinci ikinci üçüncü dördüncü beşinci"
 echo ${long_string%%' '*} 

Sınırlayıcı ile bir dizgenin önünden bir alt dizgiyi çıkarma

Bu, sınırlayıcı karakteri içermeyen dizenin önünden ilk alt dizeyi döndürür. Buna kısa alt dize seçeneği denir.

Uzun alt dize seçeneği, dizenin ön kısmını son sınırlandırılmış alt dizeye kadar döndürür. Başka bir deyişle, son sınırlandırılmış alt diziyi atlar. Sözdizimsel olarak tek fark, komutta tek bir yüzde işareti “ % ” kullanmasıdır.

 long_string="birinci ikinci üçüncü dördüncü beşinci"
 echo ${long_string%' '*} 

Sınırlayıcı ile bir dizgenin önünden uzun bir alt dizgiyi çıkarma

Beklediğiniz gibi, dizenin sonundan itibaren aynı şekilde arama yapabilirsiniz. Yüzde işareti yerine kare " # " işareti kullanın ve sınırlayıcıyı komuttaki " * " işaretinden sonra gelecek şekilde hareket ettirin.

 long_string="this.long.string.of.words.is.delimted.by.periods"
 yankı ${long_string##*.} 

Sınırlayıcı ile bir dizenin sonundan bir alt dize çıkarma

Bu kısa alt dize seçeneğidir, sınırlayıcıyı içermeyen dizenin arkasından bulduğu ilk alt dizeyi keser.

 long_string="this.long.string.of.words.is.delimted.by.periods"
 yankı ${long_string#*.} 

Sınırlayıcı ile bir dizenin sonundan uzun bir alt dize çıkarma

Uzun alt dize seçeneği, dizenin arka kısmını dizenin önünden ilk sınırlayıcıya kadar döndürür. Başka bir deyişle, ilk sınırlandırılmış alt diziyi atlar.

İkame Değiştirme

Alt dizeleri diğer alt dizelerle değiştirmek kolaydır. Biçim, eğik çizgi “ / ” karakterleriyle ayrılmış, dizenin adı, değiştirilecek alt dize ve eklenecek alt dizedir.

 string="mavi domuz kıkırdar"
 echo ${string/domuz/keçi} 

Bir dizede bir alt dizenin değiştirilmesi

Aramayı dizenin sonuna sınırlamak için, arama dizesinin önüne bir yüzde işareti “ % ” karakteri koyun.

 string="mavi domuz kıkırdar"
 echo ${string/%kıkırdamalar/kıkırdarlar} 

Bir dizenin sonunda bir alt dizenin değiştirilmesi

Aramayı dizenin başlangıcıyla sınırlamak için, arama dizesinin önüne bir kare “ # ” karakteri koyun.

 string="mavi domuz kıkırdar"
 echo ${string/#mavi/sarı} 

Bir dizenin başlangıcında bir alt dizenin değiştirilmesi

Dize Esnek Bir Şeydir

Bir dize tam istediğiniz gibi değilse veya buna ihtiyaç duyuyorsa, bu araçlar onu ihtiyaçlarınıza uyacak şekilde yeniden biçimlendirmenize yardımcı olacaktır. Karmaşık dönüşümler için özel yardımcı programları kullanın, ancak küçük ince ayarlar için kabuk yerleşiklerini kullanın ve harici bir araç yükleme ve çalıştırma ek yükünden kaçının.

İLGİLİ: Linux'taki düğümler hakkında bilmek istediğiniz her şey