Non riesco, per la vita di me, a determinare la regex corretta per questo.Regex per i permessi dei file Linux (notazione numerica)
Quello che sto cercando è un'espressione regolare per abbinare una rappresentazione numerica valida delle autorizzazioni di file Linux (ad esempio 740 per tutti i read-none, 777 per tutto-tutto-tutto). Finora ho provato la seguente:
strtotest=740
echo "$strtotest" | grep -q "[(0|1|2|3|4|5|7){3}]"
if [ $? -eq 0 ]; then
echo "found it"
fi
Il problema di quanto sopra è che l'espressione regolare corrisponde a qualsiasi cosa con 1-5
o 7
in esso, indipendentemente da eventuali altri personaggi. Ad esempio, se strtotest
dovesse essere modificato in 709
, il condizionale sarebbe vero. Ho anche provato [0|1|2|3|4|5|7{3}]
e [(0|1|2|3|4|5|7{3})]
ma quelli non funzionano altrettanto bene.
È la regex che sto usando male, o mi manca qualcosa che ha a che fare con grep
?
Grazie! Questo ha funzionato perfettamente. Vorrei poter + ripare alcune persone, ma suppongo di dover essere un po 'più attivo su questo sito per farlo: P –
'grep -Eq" [(0 | 1 | 2 | 3 | 4 | 5 | 7)] {3} "' (e il suo cugino più lungo) che hai postato nella tua risposta è in realtà errato. '[]' definisce un intervallo, quindi la tua regex dovrebbe corrispondere a '|| 9',' 77) 'tra gli altri. – doubleDown
Correggere le espressioni regolari, poiché questa è la risposta accettata e quella che è più probabile che venga vista. – OmnipotentEntity