Se hai un file di testo e vuoi cercare e sostituire una parte di un pattern abbinato, come lo faresti con perl one-liner, sed o python?
Per esempio:
"653433,78"
abbinare con [0-9]{6},[0-9]{2}.
Modificare , a ..
Se hai un file di testo e vuoi cercare e sostituire una parte di un pattern abbinato, come lo faresti con perl one-liner, sed o python?
Per esempio:
"653433,78"
abbinare con [0-9]{6},[0-9]{2}.
Modificare , a ..
Risposte:
È possibile utilizzare sottogruppi numerati. vale a dire:
Trova:
([0-9]{6}),([0-9]{2})
Sostituire:
\1.\2
Esempio in Python:
import re
inp = '653433,78'
out = re.sub(r'([0-9]{6}),([0-9]{2})', r'\1.\2', inp)
print out
Questo ti darebbe:
>>>'653433.78'
È possibile acquisire la parte corrispondente attorno al modello che si desidera sostituire e quindi riutilizzarla nell'istruzione replace.
cat yourfile | perl -p -e "s/([0-9]{6}),([0-9]{2})/\\1.\\2/g"
È anche possibile utilizzare una soluzione più complessa con lookahead e lookback (ma ciò non supporterà i caratteri jolly come * e + per il modello)
cat yourfile | perl -p -e "s/(?<=[0-9]{6}),(?=[0-9]{2})/./g"