Android

Bir dizenin bash içinde bir alt dize içerip içermediğini kontrol etme

Bash commands to not look dumb at the Interview...

Bash commands to not look dumb at the Interview...

İçindekiler:

Anonim

Bash'de dizelerle çalışırken en yaygın işlemlerden biri, bir dizenin başka bir dize içerip içermediğini belirlemektir., bir dizenin bir alt dize içerip içermediğini kontrol etmenin birkaç yolunu göstereceğiz.

Joker Karakterleri Kullanma

En kolay yaklaşım, alt dizeyi yıldız işareti joker sembolleri (yıldız işareti * ) ile kuşatmak ve dize ile karşılaştırmaktır. Joker karakter, sıfır, bir veya daha fazla karakteri temsil etmek için kullanılan bir semboldür.

Test true değerini döndürürse, alt dize dizede bulunur.

Aşağıdaki örnekte SUB alt dizesi STR dizesinde bulunup bulunmadığını kontrol etmek için if ifadesini ve eşitlik operatörünü ( == ) kullanıyoruz:

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; then echo "It's there." fi

Yürütüldüğünde komut dosyası çıkacaktır:

It's there.

Vaka operatörünü kullanma

İf ifadesini kullanmak yerine, bir dizenin başka bir dize içerip içermediğini kontrol etmek için case deyimini de kullanabilirsiniz.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' case $STR in *"$SUB"*) echo -n "It's there.";; esac

Regex Operatörünü Kullanma

Bir dize içinde belirtilen bir alt dizenin oluşup oluşmadığını belirlemek için başka bir seçenek regex operatörü =~ . Bu operatör kullanıldığında, sağ dize normal ifade olarak kabul edilir.

Noktadan sonra gelen bir yıldız işareti .* , Yeni satır karakteri dışında herhangi bir karakteri sıfır veya daha fazla tekrarla eşleştirir.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if]; then echo "It's there." fi

Komut dosyası aşağıdakileri yansıtır:

It's there.

Grep Kullanımı

Grep komutu başka bir dizede dizeleri bulmak için de kullanılabilir.

Aşağıdaki örnekte, $STR dizesini grep girdisi olarak geçiriyoruz ve girdi dizesinde $SUB dizesinin bulunup bulunmadığını kontrol ediyoruz. Komut uygun şekilde true veya false döndürür.

#!/bin/bash STR='GNU/Linux is an operating system' SUB='Linux' if grep -q "$SUB" <<< "$STR"; then echo "It's there" fi

-q seçeneği grep'e sessiz olmasını, çıktıyı atlamasını söyler.

Sonuç

Bir dizenin bir alt dize içerip içermediğini kontrol etmek Bash betiklemesinde en temel ve sık kullanılan işlemlerden biridir.

Bu öğreticiyi okuduktan sonra, bir dizenin başka bir dizeyi içerip içermediğini nasıl test edeceğinizi iyi anlamanız gerekir. Test için awk veya sed gibi diğer komutları da kullanabilirsiniz.

bash terminali