Массовый поиск и замена файлов в Freebsd

12
J
На сайте с 06.07.2011
Offline
169
1612

Нужно массово в .htm* по пути usr/home/mysite.com

заменить: .com" TARGET="_blank"

на: .com/er<? echo $ss2; ?>" TARGET="_blank"

Перепробовал кучу команд sed,find и т д.. Как я понял везде загвозка в тои, что в строчках, которые нужно заменить есть знаки /,"

Как правильно составить команду исходя из моих строчек для замены? Подскажите пожалуйста.

MIRhosting.com
На сайте с 18.10.2006
Offline
203
#1

Ну что-то вроде такого:

#!/bin/bash

#

#Что искать

SEARCH='.com" TARGET="_blank"'

#Чем заменить

REPLACE='.com/er<? echo $ss2; ?>" TARGET="_blank"'

#искать

find /usr/home/mysite.com -type f -name "*.htm" -print0 | xargs -0 sed -i -e "s%${SEARCH}%${REPLACE}%"

Андрей Нестеренко, MIRhosting Облачная платформа для DevOps (https://mirhosting.com/paas)
K5
На сайте с 21.07.2010
Offline
209
#2

экранировать обратным \ не пробовали?

аська 45два48499два записки на работе (http://memoryhigh.ru) помогу с сайтом, удалю вирусы, настрою впс -> отзывы ТУТ (/ru/forum/836248) и ТАМ (http://www.maultalk.com/topic140187.html) !!!всегда проверяйте данные людей, которые сами пишут вам в аську или скайп!!!
DV
На сайте с 01.05.2010
Offline
644
#3

В шелле спецсимволы — это песня. Пробуйте отдельные команды на тестовых строках, подбирайте результат.

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
J
На сайте с 06.07.2011
Offline
169
#4
MIRhosting.com:
Ну что-то вроде такого:

#!/bin/bash
#
#Что искать
SEARCH='.com" TARGET="_blank"'
#Чем заменить
REPLACE='.com/er<? echo $ss2; ?>" TARGET="_blank"'
#искать
find /usr/home/mysite.com -type f -name "*.htm" -print0 | xargs -0 sed -i -e "s%${SEARCH}%${REPLACE}%"

не отрабатывает скрипт

---------- Добавлено 30.04.2013 в 10:47 ----------

kgtu5:
экранировать обратным \ не пробовали?

Попробовал - не работает.

---------- Добавлено 30.04.2013 в 10:48 ----------

DenisVS:
В шелле спецсимволы — это песня. Пробуйте отдельные команды на тестовых строках, подбирайте результат.

Уже пробовал, по этой причине и отписал на форум.

iamsens
На сайте с 26.08.2009
Offline
115
#5

лови скрипт

список файлов на замену files.txt, сможешь составить или тоже комманды кинуть?

#!/bin/sh

lst=`/bin/cat files.txt`

for d in ${lst}

do

sed -i '' -e "s#\.com\" TARGET=\"_blank\"#\.com/er<? echo $ss2; ?>\" TARGET=\"_blank\"#g" ${d};

done

1. составить список файлов

2. проверить список файлов

3. только потом запускать скрипт

иначе бывают неприятные сюрпризы

J
На сайте с 06.07.2011
Offline
169
#6
iamsens:
лови скрипт
список файлов на замену files.txt, сможешь составить или тоже комманды кинуть?

#!/bin/sh

lst=`/bin/cat files.txt`

for d in ${lst}
do
sed -i '' -e "s#\.com\" TARGET=\"_blank\"#\.com/er<? echo $ss2; ?>\" TARGET=\"_blank\"#g" ${d};
done

А где указывается дерриктория?

список файлов на замену files.txt тоже скинь плиз

iamsens
На сайте с 26.08.2009
Offline
115
#7

find usr/home/mysite.com -name "*.htm" -type f > files.txt

комманда для составления списка на замену, перед запуском скрипта, проверь список

J
На сайте с 06.07.2011
Offline
169
#8
iamsens:
find usr/home/mysite.com -name "*.htm" -type f > files.txt

комманда для составления списка на замену, перед запуском скрипта, проверь список

спасибо, попробую

---------- Добавлено 30.04.2013 в 12:40 ----------

Не работает. пишет:

ErrorDocument: not found

AddHandler: not found

: not found

ErrorDocument: not found

AddHandler: not found

iamsens
На сайте с 26.08.2009
Offline
115
#9

не работает

find или shell скрипт?

покажите строки с files.txt

ErrorDocument: not found
AddHandler: not found
: not found
ErrorDocument: not found
AddHandler: not found

это похоже на содержимое файла .htaccess

что-то совсем не то делаете :)

J
На сайте с 06.07.2011
Offline
169
#10
iamsens:
не работает
find или shell скрипт?

покажите строки с files.txt



это похоже на содержимое файла .htaccess

что-то совсем не то делаете :)

Да, именно в htaccess нужно закомментить строчку ErrorDocument 404 на #ErrorDocument 404

Но почему-то не хочет, список в files.txt с путями до файликов htaccess составился правильно

Пример files.txt

/home/domain1.com/.htaccess

/home/domain2.com/.htaccess

содержание replace.sh

#!/bin/sh

lst=`/home/files.txt`

for d in ${lst}

do

sed -i '' -e 's/ErrorDocument/#ErrorDocument/g' ${d};

done

Запускаю так:

sh /home/replace.sh

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий