Bash Komut Dosyalarında Alt Dizeleri Kontrol Etme

Bash Komut Dosyalarında Alt Dizeleri Kontrol Etme
Bash

Bash'te Dize Sınırlamaya Giriş

Bash komut dosyalarıyla çalışırken, bir dizenin belirli bir alt dize içerip içermediğini kontrol etmeniz gereken durumlarla karşılaşmak yaygındır. Bu, giriş verilerinin ayrıştırılması, dizelerin doğrulanması veya içeriğin belirli ölçütlere göre filtrelenmesi gibi birçok komut dosyası senaryosunda temel bir görevdir.

Bu makalede, Bash'te bunu başarmak için "echo" ve "grep" gibi koşullu ifadeleri ve komutları kullanmak da dahil olmak üzere farklı yöntemleri inceleyeceğiz. Ayrıca komut dosyalarınızı daha bakımı kolay ve hatalara daha az eğilimli hale getirmek için en verimli ve okunabilir yaklaşımları da tartışacağız.

Emretmek Tanım
[[ ]] Bash'te dizeleri ve diğer koşulları test etmek için kullanılan koşullu bir ifade.
* Bir dize deseni eşleşmesinde herhangi bir sayıda karakteri temsil etmek için kullanılan bir joker karakter.
echo Bağımsız değişken olarak iletilen bir metin satırını veya dizeyi görüntülemek için kullanılan komut.
grep Normal bir ifadeyle eşleşen satırlar için düz metin verilerini aramaya yönelik bir komut satırı yardımcı programı.
-q Normal çıktıyı bastıran ve yalnızca çıkış durumunu döndüren bir grep seçeneği.
case Bash'teki kalıpları eşleştirmek için kullanılan koşullu bir ifade.
;; Farklı model eylemlerini ayırmak için case ifadelerinde kullanılan bir sınırlayıcı.

Bash'te Alt Dize Denetimini Anlamak

İlk komut dosyasında şunu kullanıyoruz: conditional statements bir dizenin belirli bir alt dize içerip içermediğini kontrol etmek için. Bir ana dize ve bir alt dize tanımlarız, ardından [[ ]] gelişmiş dize karşılaştırmalarına olanak tanıyan yapı. Parantezlerin içinde şunu kullanıyoruz: * alt dizeden önceki ve sonraki herhangi bir sayıda karakteri temsil eden joker karakter. Koşul doğruysa komut dosyası "İşte orada!" yazdırır; aksi takdirde "Orada değil!" yazar. Bu yöntem etkilidir ve desen eşleştirme için Bash'in yerleşik yeteneklerinden yararlanır.

İkinci senaryo şunu kullanıyor: echo Ve grep Aynı sonucu elde etmek için komutlar. Tekrar bir ana dize ve bir alt dize tanımlarız, sonra şunu kullanırız: echo ana dizgenin çıktısını almak ve onu yönlendirmek için grep kullanmak -q normal çıktıyı bastırma seçeneği. Grep Ana dize içindeki alt dizeyi arar. Alt dize bulunursa, komut dosyası "İşte orada!" yazdırır; değilse, "Orada değil!" yazar. Bu yaklaşım, güçlü metin arama yeteneklerinden yararlanır. grep, karmaşık metin desenlerinin eşleştirilmesi gereken komut dosyaları için uygun hale getirir.

Gelişmiş Bash String İşlemlerini Keşfetmek

Üçüncü komut dosyası bir kullanır case Bir alt dizenin varlığını kontrol etmek için ifade. Ana dize ve alt dizeyi tanımladıktan sonra, case deyimi ana dizeyi farklı kalıplarla eşleştirir. Alt dize mevcutsa, karşılık gelen eylem yürütülür ve "İşte orada!" yazdırılır. Alt dize bulunamazsa, varsayılan eylem "Orada değil!" yazdırır. Bu yöntem özellikle kontrol edilecek birden fazla model olduğunda kullanışlıdır. case deyimi, karmaşık dallanma mantığını birden fazla ifadeden daha temiz bir şekilde işleyebilir if-else ifadeler.

Genel olarak bu yöntemlerin her biri, bir dizenin Bash'te belirli bir alt dize içerip içermediğini belirlemenin bir yolunu sağlar. Yöntemin seçimi, ihtiyaç duyulan dize eşleştirmenin karmaşıklığına ve betiğin özel gereksinimlerine bağlıdır. Kullanma [[ ]] joker karakterlerle basit kontroller için basit ve etkilidir. echo Ve grep daha güçlü desen eşleştirmesi sunar. case Öte yandan ifade, birden fazla eşleşme koşulunun yapılandırılmış bir şekilde ele alınması için idealdir.

Bash'te Alt Dizeleri Kontrol Etmek İçin Koşullu İfadeleri Kullanma

Bash Komut Dosyası Oluşturma Yöntemi

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Check if the substring is present in the main string
if [[ "$string" == *"$substring"* ]]; then
  echo "It's there!"
else
  echo "It's not there!"
fi

Bash'te Alt Dizeleri Algılamak için Echo ve Grep Kullanmak

Echo ve Grep Komutlarını Birleştirme

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Use echo and grep to check if the substring is present
if echo "$string" | grep -q "$substring"; then
  echo "It's there!"
else
  echo "It's not there!"
fi

Bash'te Alt Dizi Tespiti için Durum İfadelerini Kullanma

Vaka İfadeleriyle Bash Komut Dosyası Oluşturma

#!/bin/bash
# Define the main string
string="My string"
# Define the substring to search for
substring="foo"
# Use case statement to check for the substring
case "$string" in
  *"$substring"*)
    echo "It's there!"
    ;;
  *)
    echo "It's not there!"
    ;;
esac

Bash'te Dize Sınırlaması İçin Gelişmiş Yöntemler

Bash'te bir dizenin alt dize içerip içermediğini kontrol etmeye yönelik temel yöntemlerin yanı sıra, farklı senaryolarda yararlı olabilecek daha gelişmiş teknikler de vardır. Böyle bir yöntem, düzenli ifadelerin kullanılmasını içerir. awk emretmek. Awk desen tarama ve işleme için güçlü bir programlama dilidir. Kullanarak awkile karmaşık dize işlemlerini daha fazla esneklikle gerçekleştirebilirsiniz. Örneğin şunları kullanabilirsiniz: awk bir dize içinde bir alt dize aramak ve eşleşmeye dayalı eylemleri yürütmek için.

Bir başka gelişmiş teknik, aşağıdakilerin kullanılmasını içerir: sed akış düzenleyici anlamına gelen komut. Sed bir veri akışındaki veya dosyadaki metni ayrıştırmak ve dönüştürmek için kullanışlıdır. Kullanabilirsiniz sed bir alt dize aramak ve eşleşen metin üzerinde değişiklik veya diğer işlemleri gerçekleştirmek için. Bu gelişmiş yöntemler, daha karmaşık olmasına rağmen, Bash komut dosyalarında metin işleme için güçlü yetenekler sunar; bu da onları karmaşık dize işlemleri gerektiren görevler için paha biçilmez kılar.

Bash'te Dize Sınırlaması Hakkında Sıkça Sorulan Sorular

  1. Bir dizenin bir alt dize içerip içermediğini nasıl kontrol ederim? awk?
  2. Bir dizenin bir alt dize içerip içermediğini kontrol etmek için awk, şu komutu kullanabilirsiniz: echo "$string" | awk '{if ($0 ~ /substring/) print "It's there!"}'
  3. Kullanabilirmiyim sed bir alt dizeyi kontrol etmek için?
  4. Evet, kullanabilirsin sed komutla bir alt dizeyi kontrol etmek için: echo "$string" | sed -n '/substring/p'
  5. Kullanmanın avantajı nedir awk üzerinde grep?
  6. Awk daha güçlü metin işleme yetenekleri sağlar ve kalıp eşleşmelerine dayalı eylemler gerçekleştirebilir, bu da onu daha çok yönlü hale getirir grep.
  7. Bir alt dizeyi ararken büyük/küçük harf durumunu nasıl göz ardı edebilirim?
  8. Bir alt dizeyi ararken büyük/küçük harf durumunu göz ardı etmek için kullanabilirsiniz. -i ile seçenek grep: echo "$string" | grep -iq "substring"
  9. Kullanmak mümkün mü regex ile if Bash'teki ifadeler?
  10. Evet, regex'i şununla kullanabilirsiniz: if Bash'teki ifadeleri kullanarak =~ Şebeke: if [[ "$string" =~ regex ]]; then

Bash'te String Sınırlaması Üzerine Son Düşünceler

Bash'te bir dizenin bir alt dize içerip içermediğini belirlemek, koşullu ifadeler, grep komutları ve case ifadeleri dahil olmak üzere çeşitli yöntemler kullanılarak gerçekleştirilebilen yaygın bir görevdir. Her yöntem, sorunu çözmek için benzersiz bir yaklaşım sunarak özel ihtiyaçlarınıza göre en uygun olanı seçmenize olanak tanır. Bu tekniklere hakim olarak Bash betiklerinizin verimliliğini ve okunabilirliğini artırabilirsiniz.