2009-05-06 11 views
0

J'ai un dossier tiré d'une installation wordpress,> 1000 fichiers. Un code PHP envoie une erreur en raison des espaces de fin sur la toute dernière ligne (j'ai nettoyé une injection iframe sur certaines lignes finales de pages, et ai trouvé/remplacé avec un espace, mais je ne savais pas que cela jetterait tout mon code).Question Regex pour trouver un espace de fin dans un dossier entier

Quelle est la manière la plus efficace de couper ces espaces? Je n'ai jamais utilisé une regex auparavant, mais je sais que c'est ce que j'utiliserais. Aidez-moi!

+0

En supposant que vous souhaitez faire cela sur la ligne de commande, quel système d'exploitation? –

+0

Je suis sur OS X (Leopard) avec bash. Merci! –

Répondre

6

Quelque chose comme:

find -type f | xargs sed -i '$ s/[[: space:]] + $ //'

Cela devrait supprimer les espaces de fuite sur la dernière ligne de n'importe quel fichier n'importe où dans le cwd. Le premier $ est l'adresse sed de "dernière ligne" et le second est l'expression rationnelle pour la fin de la ligne.

Comme toujours, veillez à effectuer une sauvegarde en premier.

+0

Merci beaucoup! –

2

Si vous êtes certain que c'est un espace de fin sur la dernière ligne du fichier, alors vous voudriez un script bash (je suppose que vous utilisez Linux) pour, pour chaque fichier (utilisez "find. "pour obtenir une liste), tail -1 le fichier, puis grep cette ligne pour l'espace ou la tabulation. En résumé, il est utile de savoir que la fermeture de?> Est inutile à la fin des fichiers PHP, et il vaut mieux l'omettre ici. Je ne peux pas compter le nombre de fois où j'ai vu un fichier PHP qui se termine par "?>" Et les gens deviennent fous en essayant de trouver un espace supplémentaire qui cause des problèmes de sortie/d'en-tête.

0

dans ce cas ce que je ferais est d'écrire un script ou un programme qui, lorsqu'il reçoit un répertoire, trouve récursivement des fichiers se terminant par .php ou quoi que ce soit alors écris simplement une fonction 1) cherche le dernier octet et stocke cette position 2) si cet octet est rechercher des espaces de retour d'un octet et vérifiez à nouveau 3) si elle est pas d'espace blanc retourner le

décalage puis en utilisant que vous pouvez écrire chaque fichier en tant que nouvelle copie ou sur la ancien

PS une des solutions ci-dessus fonctionnerait également: P

Questions connexes