Android

Hoe te controleren of een string een substring in bash bevat

Advanced unix String handling substr extraction find length of string array

Advanced unix String handling substr extraction find length of string array

Inhoudsopgave:

Anonim

Een van de meest voorkomende bewerkingen bij het werken met tekenreeksen in Bash is om te bepalen of een tekenreeks een andere tekenreeks bevat., laten we je verschillende manieren zien om te controleren of een string een substring bevat.

Wildcards gebruiken

De eenvoudigste methode is om de substring te omringen met asterisk-jokertekens (asterisk) * en deze te vergelijken met de tekenreeks. Wildcard is een symbool dat wordt gebruikt om nul, een of meer tekens weer te geven.

Als de test true retourneert, bevindt de substring zich in de tekenreeks.

In het onderstaande voorbeeld gebruiken we de instructie if en de operator equality ( == ) om te controleren of de substring SUB wordt gevonden in de tekenreeks STR :

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

Wanneer het script wordt uitgevoerd, wordt het volgende uitgevoerd:

It's there.

De case-operator gebruiken

In plaats van de if-instructie kunt u ook de case-instructie gebruiken om te controleren of een string een andere string bevat.

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

Regex-operator gebruiken

Een andere optie om te bepalen of een opgegeven substring binnen een string voorkomt, is om de regex-operator =~ . Wanneer deze operator wordt gebruikt, wordt de juiste tekenreeks beschouwd als een reguliere expressie.

De periode gevolgd door een asterisk .* Komt overeen met nul of meer tekens, behalve een nieuweteken.

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

Het script echo het volgende:

It's there.

Grep gebruiken

De opdracht grep kan ook worden gebruikt om tekenreeksen in een andere tekenreeks te vinden.

In het volgende voorbeeld geven we de tekenreeks $STR als invoer voor grep en controleren we of de tekenreeks $SUB wordt gevonden in de invoerreeks. De opdracht retourneert true of niet false van toepassing.

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

De optie -q geeft aan dat grep stil moet zijn om de uitvoer weg te laten.

Conclusie

Controleren of een string een substring bevat, is een van de meest elementaire en meest gebruikte bewerkingen in Bash scripting.

Na het lezen van deze tutorial moet u goed begrijpen hoe u kunt testen of een string een andere string bevat. U kunt ook andere opdrachten gebruiken, zoals awk of sed voor het testen.

bash-terminal