Chociaż jestem niemal pewien, że zostało to omówione, nie mogę znaleźć niczego konkretnego. Gdy kontynuuję swoją podróż po nauce bash, wciąż znajduję części, w których jestem zaskoczony, dlaczego rzeczy dzieją się tak, jak oni.Używanie dopasowywania do znajdowania podciągów w łańcuchach z tylko bashem
Wyszukiwanie i zamiana lub tylko dopasowywanie pod-łańcuchów w łańcuchach jest najprawdopodobniej jedną z pierwszych rzeczy, które robisz podczas pisania skryptów. Ale próbowanie trzymania się jednego języka lub zestawu narzędzi jest trudne do zrobienia w bashu, ponieważ jesteś w stanie rozwiązać większość problemów na wiele sposobów. Robię, co w mojej mocy, aby z bashiem pozostać jak najniższym poziomem. Wpadłem w szkopuł, że potrzebuję kogoś, kto mi wytłumaczy.
Wykonywanie pod-ciągu wyszukiwania w bashie z dopasowaniem daje mi różne wyniki w zależności od wyrażenia regularnego, którego używam, i nie jestem pewien dlaczego.
#!/bin/bash
Stext="Hallo World"
echo `expr "$Stext" : '^\(.[a-z]*\)'` # Hallo
echo `expr "$Stext" : '.*World'` # 11
Chociaż zarówno wyszukać słowo, myślę, zarówno nie wracają co Kowalski. Czemu?
Dzięki za proste wyjaśnienie @jcollado :) używałem docs że przewidziane, ale jakoś nie dostać ten nawiasach funkcjonalności. Przewodnik Bash-Scripting nie jest zbyt łatwy do strawienia. –
Ponieważ to pytanie dotyczy [tag: bash], najlepiej użyć * wbudowanego * regex jako [@kev suggest] (http://stackoverflow.com/a/9602260/1765658) zamiast * fork do '/ usr/bin/expr' *! –