Android

Cum să verificați dacă un șir conține o substrat în bash

Clătite simple rețetă pas cu pas - Laura Laurențiu

Clătite simple rețetă pas cu pas - Laura Laurențiu

Cuprins:

Anonim

Una dintre cele mai comune operații atunci când lucrați cu șiruri în Bash este de a determina dacă un șir conține sau nu un alt șir., vă vom arăta mai multe modalități de a verifica dacă un șir conține o substrat.

Utilizarea Wildcards

Cea mai ușoară abordare este de a înconjura șirul cu simboluri wildcard asterisk (asterisk) * și a compara cu șirul. Wildcard este un simbol folosit pentru a reprezenta zero, unul sau mai multe caractere.

Dacă testul se întoarce true , subcadrul este conținut în șir.

În exemplul de mai jos, utilizăm instrucțiunea if și operatorul de egalitate ( == ) pentru a verifica dacă SUB substrat se găsește în șirul STR :

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

Când este executat scriptul va ieși:

It's there.

Utilizarea operatorului de caz

În loc să folosiți instrucțiunea if, puteți utiliza și instrucțiunea de caz pentru a verifica dacă o șir include sau nu o altă șir.

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

Utilizarea operatorului Regex

O altă opțiune pentru a determina dacă apare o substrat specificată într-un șir este să utilizezi operatorul regex =~ . Când este utilizat acest operator, șirul drept este considerat o expresie obișnuită.

Perioada urmată de un asterisc .* potrivește cu zero sau mai multe apariții cu orice caracter, cu excepția unui caracter newline.

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

Scriptul va ecua următoarele:

It's there.

Folosind Grep

Comanda grep poate fi folosită și pentru a găsi șiruri într-un alt șir.

În exemplul următor, trecem șirul $STR ca intrare pentru a grep și verificăm dacă șirul $SUB se găsește în șirul de intrare. Comanda va returna true sau false după caz.

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

Opțiunea -q spune grep să fie liniștit, să omită ieșirea.

Concluzie

Verificarea dacă un șir conține o subcadere este una dintre operațiunile cele mai de bază și frecvent utilizate în scripturile Bash.

După citirea acestui tutorial, ar trebui să înțelegeți cum să testați dacă un șir include un alt șir. Puteți utiliza, de asemenea, alte comenzi precum awk sau sed pentru testare.

terminalul bash