У меня ошибка URL в нескольких HTML-файлах, которые мне нужно найти и заменить.

В настоящее время мои страницы показывают:

src="//https:

и мне нужно найти и заменить все на:

src="https:

Кто-нибудь знает способ сделать это на Linux?

2 ответа2

1

Эта команда sed должна сделать это:

sed -i -e 's/src="\/\/https:/src="https:/g' your_file

Простой тест:

$ echo 'some text src="//https: some more text' | \
  sed -e 's/src="\/\/https:/src="https:/g'
some text src="https: some more text
1

Поиск replace multiple files [linux] нашел несколько ответов, но мне все равно. Слишком много лишнего использования cat , ls чтобы получить список имен файлов и тому подобное. Поэтому я выложу более чистый ответ.

Если бы они все были в одном каталоге, я бы использовал такой небольшой скрипт:

#!/bin/bash
mkdir newdir
for i in *.html
do
    sed 's!src="//https:!src="https:!g' < "$i" > "newdir/$i"
done

И теперь исправленные файлы будут в newdir . Обратите внимание, что не HTML-файлы не будут скопированы, поэтому будьте осторожны. Используйте diff -r для сравнения и проверки результатов.

Если у вас более сложная структура каталогов, проще всего запустить скрипт в каждом каталоге. Если у вас есть только несколько, просто сделайте это вручную. Если у вас их много, вы захотите использовать другой скрипт для обхода дерева и вызвать его. Я не буду вдаваться в это здесь; если вам это нужно, напишите еще один вопрос.

Изменить: Вы также можете использовать -i для замены на месте, как в ответ Jakuje. Я предпочитаю более осторожный подход, сам.

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