1

У меня есть много файлов со смешанными URL-адресами, которые мне нужно преобразовать в нижний регистр, меняя только ссылки внутри файлов и оставляя остальное содержимое нетронутым. Я обнаружил, что это возможно с помощью регулярных выражений в Notepad++:

Найти в файлах

Поиск: (href = ['"])(.+)(['"])

Заменить на: \1 \L \2 \3

Тем не менее, мне нужно сделать это с помощью bash или vim. Как я мог это сделать? Кроме того, как применить его к нескольким файлам в разных папках?

1 ответ1

2

В Баш:

sed -i 's/<a href.*\">/\L&/' file.txt

В VIM:

:%s/<a href.*\">/\L&/

Я не был уверен, что вы просто хотите изменить полное доменное имя или весь URL-адрес, или если каждый якорь находится в отдельной строке, это должно охватывать любую ситуацию. Это изменит ТОЛЬКО привязанный URL, а не текст привязки (я предполагаю, что это то, что вы спрашиваете)

Редактировать:

Если вы хотите применить это к нескольким файлам в разных папках, cd в базовый каталог, содержащий все файлы и подпапки с файлами, которые вы хотите отредактировать, и выполните следующую команду:

find . -type f -name "*.html" | while read line; do sed -i 's/<a href.*\">/\L&/' $line; done

Это будет искать любые файлы в вашем текущем каталоге (тот, в который вы должны cd ) и подкаталоги, заканчивающиеся на .html, и выполнит вышеупомянутую команду sed. (отрегулируйте расширение файла по своему усмотрению).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .