Renommer le répertoire Regex


0

Je ne suis pas génial avec regex et je ne comprends pas pourquoi c'est choisir le prochain caractère après le -

/[\-][^ - ]/g

avec cela, il sélectionne - et le caractère suivant.

Je veux sélectionner le tiret entre deux nombres, mais je ne veux pas sélectionner les tirets qui ont un espace avant et après.

en réalité, j'essaie de l'utiliser dans Ubuntu pour renommer de manière récursive les répertoires nommés

#### - ##-##

à

#### - ##:## 

Pouvez-vous ajouter ce qui correspond actuellement? J'ai du mal à comprendre en quoi consiste son comportement actuel et pourquoi il est incorrect?
Jonno

Réponses:


0

Habituellement, on transforme de tels motifs en ancrant le tiret aux chiffres qui l’entourent, par exemple:

foo="123 - 456-78"
bar=$(echo "$foo" | sed -r -e 's,([[:digit:]])-([[:digit:]]),\1:\2,')

C'est-à-dire, faire correspondre un chiffre de chaque côté et utiliser une référence arrière pour remettre les chiffres en arrière.

Réellement sed n’est pas en soi un bon exemple, puisque c’est (comme bash ) une utilisation d’ERE (expressions régulières étendues) et non la norme . Cependant, comme cela concerne Ubuntu, on peut supposer que vous utilisez GNU sed , qui a un -r option pour spécifier les ERE.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.