Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 30/04/2022, à 15: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, à 17:31)

Hors ligne

#2 Le 30/04/2022, à 16: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, à 16: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, à 17: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, à 17:16)

Hors ligne

#5 Le 30/04/2022, à 17: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, à 17: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, à 17: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 wink

Hors ligne

#8 Le 30/04/2022, à 22: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, à 22:58)

Hors ligne

#9 Le 30/04/2022, à 22: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.

Hors ligne

#10 Le 30/04/2022, à 22: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, à 22: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.

Hors ligne

#12 Le 30/04/2022, à 23: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