Android

Jak sprawdzić, czy ciąg zawiera podciąg w bash

Shell Scripting Interview Questions & Answers | Linux Admin Certification Training | Edureka

Shell Scripting Interview Questions & Answers | Linux Admin Certification Training | Edureka

Spisu treści:

Anonim

Jedną z najczęstszych operacji podczas pracy z ciągami w Bash jest ustalenie, czy ciąg zawiera inny ciąg.

pokażemy kilka sposobów sprawdzania, czy łańcuch zawiera podłańcuch.

Używanie symboli wieloznacznych

Najłatwiejszym sposobem jest otoczenie podłańcucha symbolami wieloznacznymi gwiazdki (gwiazdka) * i porównanie go z łańcuchem. Symbol wieloznaczny to symbol używany do reprezentowania zera, jednego lub więcej znaków.

Jeśli test zwraca true , podłańcuch jest zawarty w ciągu.

W poniższym przykładzie używamy instrukcji if i operatora równości ( == ), aby sprawdzić, czy podłańcuch SUB znajduje się w ciągu STR :

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

Po uruchomieniu skrypt wyświetli:

It's there.

Korzystanie z operatora skrzynki

Zamiast używać instrukcji if, możesz także użyć instrukcji case, aby sprawdzić, czy łańcuch zawiera inny ciąg.

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

Korzystanie z Regex Operator

Inną opcją ustalenia, czy określony ciąg znaków występuje w ciągu, jest użycie operatora wyrażenia regularnego =~ . Gdy używany jest ten operator, właściwy ciąg znaków jest traktowany jako wyrażenie regularne.

Kropka, po której następuje gwiazdka .* Odpowiada zeru lub większej liczbie wystąpień dowolnego znaku oprócz znaku nowej linii.

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

Skrypt wyświetli następujące echo:

It's there.

Korzystanie z Grep

Polecenia grep można również użyć do znalezienia ciągów w innym ciągu.

W poniższym przykładzie przekazujemy ciąg $STR jako dane wejściowe do grep i sprawdzamy, czy ciąg $SUB znajduje się w ciągu wejściowym. Polecenie zwróci odpowiednio true lub false .

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

Opcja -q mówi grepowi, aby był cichy i pomijał dane wyjściowe.

Wniosek

Sprawdzanie, czy łańcuch zawiera podłańcuch, jest jedną z najbardziej podstawowych i często używanych operacji w skryptach Bash.

Po przeczytaniu tego samouczka powinieneś dobrze zrozumieć, w jaki sposób sprawdzić, czy ciąg zawiera inny ciąg. Do testowania możesz także użyć innych poleceń, takich jak awk lub sed .

terminal bash