supprimer le motif avec des nombres aléatoires (chiffres) des fichiers php

0

J'essaie de supprimer ou de remplacer les chiffres ((nombres aléatoires)) dans un grand nombre de fichiers php avec find & amp; xargs et grep avec sed etc. les chiffres ressemblent à ça dans le fichier php

 /web/20150618155933/http//www.example.com/
 src='/web/30110218335932im_/img/example.png'
( /web/20150703082231js_/https://me-ssl : /web/20150703082231/http://me-cdn')

les bonnes choses les chiffres sont statiques sur 14 chiffres seulement .. mais finissez avec soit js_ im_ ou seulement des nombres ,, donc j'étais utiliser la commande ci-dessous

find . -type f -name '*.php*' -print0 | xargs egrep -hEo '/web/\<[[:digit:]]{14}\>/' | xargs sed -i 0 ?????

je suis coincé dans deux choses 1. intégré à la commande sed 2. ajouter dans la recherche le motif se termine avec js_ im_ ou uniquement des chiffres

Merci

user3716621
la source

Réponses:

0

Est-ce que quelque chose comme ce travail pour vous:

find . -type f -name \*.php -exec sed -i 's:/web/[0-9]\+:/web/:g' {} \;

?

Sasha Pachev
la source
nop, j'ai couru ça ne fait rien
user3716621
Cela fonctionne comme prévu. S'il vous plaît ne pas downvote sans avant de tenter de dépannage. Les détails de votre système peuvent vous aider.
SΛLVΘ
0

à la fin a trouvé ce travail avec moi

find . -type f -name '*.php*' -print0 | xargs -0 sed -i 's/\/web\/\([0-9,a-z,_]*\)[\/]//g'

Merci les gars

user3716621
la source
(1) oui \/ fonctionne, mais lorsque vous effectuez une recherche et un remplacement qui inclut des barres obliques, il est souvent plus clair d’utiliser un autre caractère comme délimiteur. J'aime les barres verticales ( | ) d'autres préfèrent !, @, #ou tout autre élément qui n’apparaît pas dans la commande et qui n’est pas un caractère spécial. (2) […] compte comme une seule expression régulière; donc aussi […]*. Donc, vous n'avez pas besoin de l'enfermer dans \(…\) (sauf si vous l'insérez dans la chaîne de remplacement). (3) Ne pas inclure , dans un […] expression sauf si vous voulez qu'elle corresponde à une virgule. … (Suite)
Scott
(Suite)… (4) Je sais que vos exemples ne montrent aucune majuscule, mais avez-vous des majuscules dans vos données? Si vous le faites, vous devez inclure A-Z dans votre regex. (5) Pourquoi as-tu mis le dernier \/ entre parenthèses? Juste pour plus de clarté? (6) Votre sed commande peut être compressée à 's|/web/[0-9a-z_]*/||g' (ou, le cas échéant, …[0-9A-Za-z_]*… ).
Scott