Android

Hur man kontrollerar om en sträng innehåller en substring i bash

Основы Ubuntu Linux: apt-get, bash, командная строка

Основы Ubuntu Linux: apt-get, bash, командная строка

Innehållsförteckning:

Anonim

En av de vanligaste operationerna när du arbetar med strängar i Bash är att avgöra om en sträng innehåller en annan sträng eller inte., visar vi dig flera sätt att kontrollera om en sträng innehåller en substring.

Med hjälp av jokertecken

Det enklaste tillvägagångssättet är att omge substrängen med asterisk jokersymboler (asterisk) * och jämföra den med strängen. Wildcard är en symbol som används för att representera noll, en eller flera tecken.

Om testet återgår true , finns substanssträngen i strängen.

I exemplet nedan använder vi if-satsen och jämställdhetsoperatören ( == ) för att kontrollera om understrängen SUB finns i strängen STR :

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

Vid körning kommer skriptet att matas ut:

It's there.

Använda falloperatören

Istället för att använda if-uttalandet kan du också använda ärendeuttalandet för att kontrollera om en sträng innehåller en annan sträng eller inte.

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

Använda Regex Operator

Ett annat alternativ för att bestämma om en specificerad substring inträffar i en sträng är att använda regex-operatören =~ . När den här operatören används betraktas den högra strängen som ett vanligt uttryck.

Perioden följt av en asterisk .* Matchar noll eller fler förekommer vilket tecken som helst utom ett tecken på en ny linje.

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

Skriptet kommer att upprepa följande:

It's there.

Använda Grep

Grep-kommandot kan också användas för att hitta strängar i en annan sträng.

I följande exempel överför vi strängen $STR som en ingång till grep och kontrollerar om strängen $SUB finns i inmatningssträngen. Kommandot kommer att returnera true eller false efter behov.

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

Alternativet -q säger att grep ska vara tyst, för att utelämna utgången.

Slutsats

Att kontrollera om en sträng innehåller en substring är en av de mest grundläggande och ofta använda operationerna i Bash-skript.

När du har läst denna handledning bör du ha en god förståelse för hur du testar om en sträng innehåller en annan sträng. Du kan också använda andra kommandon som awk eller sed för testning.

bash terminal