Android

Slik kontrollerer du om en streng inneholder en substring i bash

tr - Transform, Replace and Remove specific characters from strings | #10 Practical Bash

tr - Transform, Replace and Remove specific characters from strings | #10 Practical Bash

Innholdsfortegnelse:

Anonim

En av de vanligste operasjonene når du arbeider med strenger i Bash er å bestemme om en streng inneholder en annen streng., vil vi vise deg flere måter å sjekke om en streng inneholder en substring.

Bruker jokertegn

Den enkleste tilnærmingen er å omgi undergrensen med asterisk jokersymboler (asterisk) * og sammenligne den med strengen. Jokertegn er et symbol som brukes til å representere null, ett eller flere tegn.

Hvis testen returnerer true , er understrengen inneholdt i strengen.

I eksemplet nedenfor bruker vi if-uttalelsen og likestillingsoperatøren ( == ) for å sjekke om substringssubben finnes i strengen STR :

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

Når det kjøres, vil skriptet komme ut:

It's there.

Bruke saksoperatøren

I stedet for å bruke if-uttalelsen, kan du også bruke saksuttalelsen til å sjekke om en streng inkluderer en annen streng.

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

Bruker Regex Operator

Et annet alternativ for å bestemme om en spesifisert understreng forekommer i en streng er å bruke regex-operatøren =~ . Når denne operatøren brukes, blir den høyre strengen vurdert som et vanlig uttrykk.

Perioden etterfulgt av en stjerne .* Samsvarer med null eller flere forekommer et hvilket som helst tegn bortsett fra et nylinjetegn.

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

Skriptet vil gjenskape følgende:

It's there.

Bruke Grep

Grep-kommandoen kan også brukes til å finne strenger i en annen streng.

I det følgende eksemplet passerer vi strengen $STR som en inngang til grep og sjekker om strengen $SUB er funnet i inputstrengen. Kommandoen vil returnere true eller false etter 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 forteller at grep skal være stille, for å utelate utgangen.

Konklusjon

Å sjekke om en streng inneholder en substring er en av de mest grunnleggende og ofte brukte operasjonene i Bash-scripting.

Etter å ha lest denne opplæringen, bør du ha god forståelse for hvordan du tester om en streng inkluderer en annen streng. Du kan også bruke andre kommandoer som awk eller sed for testing.

bash terminal