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