Bash: String Manipulation

Bu bölümde, bash ile string manipulasyonu ile ilgili temel konuları kısa örneklerle açıklayacağım. Concatenation, append, length, substring ve sık kullanılan cut komutu…

String Concatenation

String concatenation, için stringleri peş peşe yazmak yeterlidir.

a="Hello"
b="There"
c="${a} ${b}"
echo "${c}"
> Hello There

+= Append

a=2
a+=4
echo $a
> 24

echo $a         # Variable a is string, but also an integer
> 24
((a+=12))
echo $a
> 36

Length - Number of Characters

echo $(#a)      # Returns number of characters in a string
> 2

Substring

string=YOUR-STRING
echo ${string:P}
echo ${string:P:L}

P, Starting position and L is length of the substring. Eğer, length belirtilmez ise P’den başlar stringin sonuna kadar olan kısım geri döndürülür.

echo $(#c)
> 11
echo $(c:3)     # Returns substring of a string staring from 3rd char.
> lo There
echo $(c:0)     # Returns the string itself. Notice the string array starts from 0.
> Hello There
echo $(c:3:2)   # Start from 3rd char go for 2 char.
> lo

Ayrıca negatif sayılar ile geriye doğru belirtmek de mümkün.

echo $(c: -5:3) # Notice the space before negative starting index.
> The

Bu konuda kullanılabilecek bir komut da cut.

echo "Hello There" | cut -cN-M

N başlangıç indexi, M bitiş indexi olmak üzere -c --characters belirtilen karakterleri döndürür.

Yukarıdaki örnekten farklı olarak cut komutu echo "Hello There" | cut -c3-2, ll döndürecektir. Çünkü, indexi sıfırdan değil 1’den başlar.

Şimdi bir delimeter’a göre stringi parçalayalım. Aşağıdaki örnekte -d --delimeter, -f --fields, kısa çizgiye göre stringi bölüp 3. alanı döndürmesini söylüyoruz.

str="ne-mutlu-Türküm-diyene-!"
substr=$(echo $str | cut -d'-' -f 3)
echo $substr
> Türküm

Find & Replace

meyve = "elma muz muz ananas"
echo ${meyve/muz/kivi}
> elma kivi muz ananas      # "meyve" stringi içerisinde bulduğu ilk "muz" substringini "kivi" ile değiştirir.
echo ${meyve//muz/kivi}     # / işareti ile yalnızca ilk substring değil, tüm örnekleri değiştirir.
> elma kivi kivi ananas
echo ${meyve/#muz/kivi}     # # işareti kullanıldığında, eğer belirtilen substring, stringin başındaysa yer alıyorsa çalışır.
> elma muz muz ananas
echo ${meyve/#elma/kivi}
> kivi muz muz ananas
echo ${meyve/%ananas/kivi}  # % işareti kullanıldığında, eğer belirtilen substring, stringin sonunda yer alıyorsa çalışır.
> elma muz muz kivi

Next Episode

published on 17.11.2019

Bu yazıda, bash scriptlerindeki dizi mantığına temel bir giriş yapacağız. Bir boyutlu indexed arrayleri ve associative arrayleri (key, value pairs) ele alacağız. Başlayalım… Bash üzerinde boş bir dizi oluşturmak için aşağıdaki syntax kullanılabilir. […] a=() # a is an empty array …

Previous Episode

published on 16.11.2019

val=a + a - a * a / a ** a % a > 27 let "a = 3 ** 3" echo $a > 27 Double Parentheses let, ile çalışabileceğimiz gibi çift parantez kullanarak da bash’e aritmatik operasyon yapılmasını gerektiğini anlatabiliriz.

TAG CLOUD