Sebbene sia quasi sicuro che questo è stato coperto, non riesco a trovare nulla di specifico a questo. Mentre continuo il mio viaggio sull'apprendimento bash continuo a cercare parti in cui sono sconcertato sul perché le cose accadano nel modo in cui lo fanno.Utilizzo della corrispondenza per trovare sottostringhe nelle stringhe con solo bash
Cercare e sostituire o semplicemente associare le stringhe secondarie nelle stringhe è molto probabilmente una delle prime cose che si fanno durante la scrittura degli script. Ma cercare di attenersi a una sola lingua o serie di strumenti è difficile da fare in bash, dato che sei in grado di risolvere la maggior parte dei problemi in più modi. Sto facendo del mio meglio per rimanere il più basso livello possibile con bash. Ho incontrato un problema che ho bisogno di qualcuno che mi spieghi.
Fare una sottostringa con una ricerca in bash con corrispondenza mi dà risultati diversi a seconda dell'espressione regolare che utilizzo e non sono sicuro del perché.
#!/bin/bash
Stext="Hallo World"
echo `expr "$Stext" : '^\(.[a-z]*\)'` # Hallo
echo `expr "$Stext" : '.*World'` # 11
Anche se entrambi ricerca di una parola, penso, entrambi non restituiscono quello che trovano. Perché?
Grazie per la semplice spiegazione @jcollado :) Stavo usando i documenti che hai fornito, ma in qualche modo non ha ottenuto questa parentesi funzionalità. La guida di Bash-Scripting non è troppo facile da digerire. –
Poiché questa domanda riguarda [tag: bash], preferisci usare * builtin * regex come [@kev suggerire] (http://stackoverflow.com/a/9602260/1765658) invece di * fork in '/ usr/bin/expr' *! –