Regex вопрос, чтобы найти конечный пробел в целой папке - PullRequest
0 голосов
/ 06 мая 2009

У меня есть папка, извлеченная из установки WordPress,> 1000 файлов. Некоторый php-код выдает ошибку из-за завершающих пробелов в самой последней строке (я очистил вставку iframe на некоторых последних строках страниц и нашел / заменил пробелом, но не знал, что это отбросит все мой код).

Какой самый эффективный способ разрезать эти пространства? Я никогда раньше не запускал регулярные выражения, но знаю, что это то, что я бы использовал. Помогите!

Ответы [ 3 ]

6 голосов
/ 06 мая 2009

Что-то вроде:

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

Это должно удалить завершающие пробелы в последней строке любого файла в любом месте в cwd. Первый $ - это адрес sed для «последней строки», а второй - регулярное выражение для конца строки.

Как всегда, сначала сделайте резервную копию.

2 голосов
/ 06 мая 2009

Если вы уверены, что это последняя пробел в последней строке файла, то вам нужен bash-скрипт (я предполагаю, что вы используете Linux) для каждого файла (используйте «find»). чтобы получить список), введите -1 файл, а затем наберите эту строку для пробела или табуляции.

Тангенциально, полезно знать, что закрытие?> Не нужно в конце файлов PHP, и лучше его там пропустить. Я не могу сосчитать, сколько раз я видел PHP-файл, который заканчивается на «?>», И люди сходят с ума, пытаясь найти один лишний пробел, который вызывает проблемы с выводом / заголовком.

0 голосов
/ 06 мая 2009

в этом случае я хотел бы написать скрипт или программу, которая при задании каталога рекурсивно проходит поиск файлов, оканчивающихся на .php или что-то еще, затем просто пишет функцию 1) ищет последний байт и сохраняет эту позицию 2) если этот байт является пробелом, отыщите байт и проверьте снова 3) если это не пробел, вернуть смещение

затем, используя это, вы можете записать каждый файл как новую или поверх старой

P.S одно из вышеприведенных решений также будет работать: P

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...