#1 Le 30/04/2022, à 14:40
- abecidofugy
[Résolu] Cherche programme pour éditer regex, sous Ubuntu ou Windows
Hello,
Je cherche à décommenter, à l’aide de sed, ces trois lignes dans un fichier :
# RewriteCond %{HTTP_HOST} .
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Aussi, je cherche un éditeur d’expressions régulières, qui me donnerait le résultat avec les lettres échappées pour coller ce pattern dans mon script bash.
Un programme sous Ubuntu ou Windows.
(j’ai lu que Notepad+ avait ça, mais je ne vois pas comment s’en servir ^^)
Merci.
Dernière modification par abecidofugy (Le 30/04/2022, à 16:31)
Hors ligne
#2 Le 30/04/2022, à 15:21
- abecidofugy
Re : [Résolu] Cherche programme pour éditer regex, sous Ubuntu ou Windows
On dirait que j’ai trouvé : https://regexr.com/
Hors ligne
#3 Le 30/04/2022, à 15:39
- abecidofugy
Re : [Résolu] Cherche programme pour éditer regex, sous Ubuntu ou Windows
Marche pas :
#!/bin/bash
# décommente la ligne RewriteBase /
sed -i '/RewriteBase \/$/s/^#//g' web/.htaccess
sed -i '/RewriteCond %{HTTP_HOST} ./s/^#//g' web/.htaccess
sed -i '/RewriteCond %{HTTP_HOST} !\^www\\. \[NC\]/s/^#//g' web/.htaccess
sed -i '/RewriteRule \^ http%{ENV:protossl}:\/\/www\.%{HTTP_HOST}%{REQUEST_URI} \[L,R=301\]/s/^#//g' web/.htaccess
Hors ligne
#4 Le 30/04/2022, à 16:10
- MicP
Re : [Résolu] Cherche programme pour éditer regex, sous Ubuntu ou Windows
Bonjour
Dans l'extrait cité dans ton message #1
il y a deux caractères espace qui précèdent le caractère #
et il y a aussi un caractère espace qui sépare le caractère # de la chaîne de caractères Rewrite
Donc, dans la commande de recherche/remplacement des lignes de commande sed
il vaudrait mieux remplacer le motif :
^#
par le motif :
^ *# *
=======
L'attribut g (global) de la commande sed de recherche/remplacement
n'est pas nécessaire
=======
Dans la ligne de commande suivante :
sed -i '/RewriteCond %{HTTP_HOST} ./s/^ *# *//' web/.htaccess
il faudrait échapper le caractère . (point) comme ci-dessous :
sed -i '/RewriteCond %{HTTP_HOST} \./s/^ *# *//' web/.htaccess
sinon, ce ne sera pas seulement la première,
mais les deux directives suivantes qui seront dé-commentées :
# RewriteCond %{HTTP_HOST} .
# RewriteCond %{HTTP_HOST} !^www\. [NC]
============================
============================
Les lignes de commande que je te propose :
sed -i '/RewriteCond %{HTTP_HOST} \./s/^ *# *//' web/.htaccess
sed -i '/RewriteCond %{HTTP_HOST} !\^www\\. \[NC\]/s/^ *# *//' web/.htaccess
sed -i '/RewriteRule \^ http%{ENV:protossl}:\/\/www\.%{HTTP_HOST}%{REQUEST_URI} \[L,R=301\]/s/^ *# *//' web/.htaccess
Dernière modification par MicP (Le 30/04/2022, à 16:16)
Hors ligne
#5 Le 30/04/2022, à 16:18
- abecidofugy
Re : [Résolu] Cherche programme pour éditer regex, sous Ubuntu ou Windows
C’est bon, ma femme a trouvé ^^
Il y avait deux espaces avant le dièse de commentaire.
Hors ligne
#6 Le 30/04/2022, à 16:18
- abecidofugy
Re : [Résolu] Cherche programme pour éditer regex, sous Ubuntu ou Windows
@MicP : grilled. Je vais relire ton message et adapter peut-être.
Merci.
Hors ligne
#7 Le 30/04/2022, à 16:30
- abecidofugy
Re : [Résolu] Cherche programme pour éditer regex, sous Ubuntu ou Windows
Marche parfaitement tes lignes. Merci encore. Je passe en résolu
Hors ligne
#8 Le 30/04/2022, à 21:20
- MicP
Re : [Résolu] Cherche programme pour éditer regex, sous Ubuntu ou Windows
Je me disais qu'à tant qu'à faire,
autant ne rechercher que le nombre exact de caractères espace recherchés : 2 avant le # et 1 juste après,
ce qui donnerait, avec une seule ligne de commande sed
quelque chose comme ce qui suit :
(Le bloc des 5 lignes ci-dessous est à copier/coller en une seule fois dans la fenêtre de terminal)
sed -i \
-e '/RewriteBase \/$/ s/^ # //' \
-e '/RewriteCond %{HTTP_HOST} \./ s/^ # //' \
-e '/RewriteCond %{HTTP_HOST} !\^www\\. \[NC\]/ s/^ # //' \
-e '/RewriteRule \^ http%{ENV:protossl}:\/\/www\.%{HTTP_HOST}%{REQUEST_URI} \[L,R=301\]/ s/^ # //' web/.htaccess
On peut aussi l'écrire sur une seule ligne comme ça :
sed -i '/RewriteBase \/$/s/^ # //;/RewriteCond %{HTTP_HOST} \./s/^ # //;/RewriteCond %{HTTP_HOST} !\^www\\. \[NC\]/s/^ # //;/RewriteRule \^ http%{ENV:protossl}:\/\/www\.%{HTTP_HOST}%{REQUEST_URI} \[L,R=301\]/s/^ # //' web/.htaccess
(mais c'est plus difficile à lire…)
Dernière modification par MicP (Le 30/04/2022, à 21:58)
Hors ligne
#9 Le 30/04/2022, à 21:25
- Watael
Re : [Résolu] Cherche programme pour éditer regex, sous Ubuntu ou Windows
autant ne rechercher que le nombre exact de caractères espace recherchés
je tablerais davantage sur le fait qu'il peut y en avoir, ou pas.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#10 Le 30/04/2022, à 21:47
- MicP
Re : [Résolu] Cherche programme pour éditer regex, sous Ubuntu ou Windows
je tablerais davantage sur le fait qu'il peut y en avoir, ou pas.
Oui, moi aussi,
mais au cas où …
Hors ligne
#11 Le 30/04/2022, à 21:49
- Watael
Re : [Résolu] Cherche programme pour éditer regex, sous Ubuntu ou Windows
justement, j'ai l'impression de couvrir plus de possibilités en ne fixant rien : \s*#\s*
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#12 Le 30/04/2022, à 22:16
- MicP
Re : [Résolu] Cherche programme pour éditer regex, sous Ubuntu ou Windows
Donc, ça donnerait :
sed -i \
-e '/RewriteBase \/$/ s/\s*#\s*//' \
-e '/RewriteCond %{HTTP_HOST} \./ s/\s*#\s*//' \
-e '/RewriteCond %{HTTP_HOST} !\^www\\. \[NC\]/ s/\s*#\s*//' \
-e '/RewriteRule \^ http%{ENV:protossl}:\/\/www\.%{HTTP_HOST}%{REQUEST_URI} \[L,R=301\]/ s/\s*#\s*//' web/.htaccess
et pour le coup, même les caractères de tabulation sont pris en compte.
Hors ligne