Se si desidera ottenere solo il testo corrispondente di un'espressione regolare, vorrei utilizzare
grep -o 'regex' file
Nello spirito del codice vorrei modificarlo in modo da essere
while read line; do
[[ $line =~ regex ]] || continue
# do somethinw with $line or $BASH_REMATCH, perhaps put it in an array.
done < file
Se si desidera abbinare più regex sulla stessa linea, ecco un modo.
while read line; do
# do somethinw with $line
done < <(grep -o 'regex' file)
Presumo che la tua espressione regolare sia un esempio semplificato di ciò che stai facendo davvero. Il ? non è utile e le tue virgolette corrispondono a una stringa letterale.
fonte
2009-03-13 10:41:44
Vuoi aggiungere il? alla fine del modello? – Richard