The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Поиск и замена/удаление"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Поиск и замена/удаление"  
Сообщение от zilonitiz email(??) on 07-Дек-06, 23:05 
Как в файлах находящихся в папке и подпапках удалить символ или строку если она в них присутствует? К примеру удалить во всех файлах УРЛ что бы вид вместо <img src="http://blabla.bla/img/pic.jpg> был <img src="img/pic.jpg">
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Поиск и замена/удаление"  
Сообщение от newser (??) on 08-Дек-06, 11:31 
>Как в файлах находящихся в папке и подпапках удалить символ или строку если она в них присутствует? К примеру удалить во всех файлах УРЛ что бы вид вместо <img src="http://blabla.bla/img/pic.jpg> был <img src="img/pic.jpg">

man sed

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Поиск и замена/удаление"  
Сообщение от zilonitiz email(??) on 08-Дек-06, 12:01 
>>Как в файлах находящихся в папке и подпапках удалить символ или строку если она в них присутствует? К примеру удалить во всех файлах УРЛ что бы вид вместо <img src="http://blabla.bla/img/pic.jpg> был <img src="img/pic.jpg">
>
>man sed

Да вот никак  догнать немогу как построить команду...


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Поиск и замена/удаление"  
Сообщение от zilonitiz email(ok) on 13-Дек-06, 18:33 
>>>Как в файлах находящихся в папке и подпапках удалить символ или строку если она в них присутствует? К примеру удалить во всех файлах УРЛ что бы вид вместо <img src="http://blabla.bla/img/pic.jpg> был <img src="img/pic.jpg">
>>
>>man sed
>
>Да вот никак  догнать немогу как построить команду...


Никто не подскажет изи гуру седа?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Поиск и замена/удаление"  
Сообщение от allez (ok) on 14-Дек-06, 06:22 
>>>>Как в файлах находящихся в папке и подпапках удалить символ или строку если она в них присутствует? К примеру удалить во всех файлах УРЛ что бы вид вместо <img src="http://blabla.bla/img/pic.jpg> был <img src="img/pic.jpg">
>>>
>>>man sed
>>
>>Да вот никак  догнать немогу как построить команду...
>
>
>Никто не подскажет изи гуру седа?


А вам уже подсказали: man sed.
Он даже на русском есть: http://www.opennet.me/man.shtml?topic=sed&russian=0&category=&submit=%F0%CF%CB%C1%DA%C1%D4%D8+man#lbAC

P. S. Вы на каком курсе и по какой специальности учитесь?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Поиск и замена/удаление"  
Сообщение от zilonitiz email(??) on 14-Дек-06, 13:09 
>>>>>Как в файлах находящихся в папке и подпапках удалить символ или строку если она в них присутствует? К примеру удалить во всех файлах УРЛ что бы вид вместо <img src="http://blabla.bla/img/pic.jpg> был <img src="img/pic.jpg">
>>>>
>>>>man sed
>>>
>>>Да вот никак  догнать немогу как построить команду...
>>
>>
>>Никто не подскажет изи гуру седа?
>
>
>А вам уже подсказали: man sed.
>Он даже на русском есть: http://www.opennet.me/man.shtml?topic=sed&russian=0&category=&submit=Показать+man#lbAC
>
>P. S. Вы на каком курсе и по какой специальности учитесь?

Да немогу я понять как составить команду неужеле непонять? Причем тут курс и специальность?


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Поиск и замена/удаление"  
Сообщение от allez (ok) on 14-Дек-06, 13:59 
>Да немогу я понять как составить команду неужеле непонять? Причем тут курс
>и специальность?


Если не можете понять, то зачем взялись?
Раз уж вам и русский ман не помог - почитайте учебник, он тоже на русском и с примерами.
Лежит здесь: http://gazette.linux.ru.net/rus/articles/abs-guide/a15696.html
Среди примеров есть как минимум один по вашей теме.
Если же возникнут еще какие-то вопросы, то ответы на них вы найдете в самом
ABS Guide: http://gazette.linux.ru.net/rus/articles/index-abs-guide.html

А про курс и специальность я спросил потому, что очень уж часто на форумах попадаются
студенты, которым лень самостоятельно делать свои домашние задания. Вы, надеюсь, не из
их числа? ;-)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Поиск и замена/удаление"  
Сообщение от zilonitiz email(ok) on 14-Дек-06, 15:12 
>Если не можете понять, то зачем взялись?
Ну... руками не але ковыряться в куче состоящей из 5к файлов...

>А про курс и специальность я спросил потому, что очень уж часто
>на форумах попадаются
>студенты, которым лень самостоятельно делать свои домашние задания. Вы, надеюсь, не из
>
>их числа? ;-)

Нет. не из их числа... Второй день ковыряю хавту/маны и никак немогу догнать как постоить команду....

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Поиск и замена/удаление"  
Сообщение от allez (ok) on 15-Дек-06, 07:13 
>Нет. не из их числа... Второй день ковыряю хавту/маны и никак немогу
>догнать как постоить команду....


Ну хорошо. Та-ак, какая вами была поставлена задача? Поиск и замена/удаление.
>К примеру удалить во всех файлах УРЛ что бы вид вместо <img src="http://blabla.bla/img/pic.jpg> был <img src="img/pic.jpg">

Начнем с того, что для поиска воспользуемся утилитой find, а ее опцией -exec - для
запуска sed и удаления ненужных подстрок. В итоге получим вот такую конструкцию:

find /where/to/search -type f -exec sed -i .bak 's/http:\/\/blabla.bla\///g' {} \;

В результате работы этой команды будут найдены все файлы в каталоге /where/to/search
и в них будет удалена подстрока "http://blabla.bla/" (точнее говоря, она будет заменена
на пустую строку). При этом будут созданы резервные копии файлов с суффиксом ".bak".
Вот и все. Совсем ведь не трудно, правда? ;-)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Поиск и замена/удаление"  
Сообщение от zilonitiz email(ok) on 15-Дек-06, 12:26 
>>Нет. не из их числа... Второй день ковыряю хавту/маны и никак немогу
>>догнать как постоить команду....
>
>
>Ну хорошо. Та-ак, какая вами была поставлена задача? Поиск и замена/удаление.
>>К примеру удалить во всех файлах УРЛ что бы вид вместо <img src="http://blabla.bla/img/pic.jpg> был <img src="img/pic.jpg">
>
>Начнем с того, что для поиска воспользуемся утилитой find, а ее опцией
>-exec - для
>запуска sed и удаления ненужных подстрок. В итоге получим вот такую конструкцию:
>
>
>find /where/to/search -type f -exec sed -i .bak 's/http:\/\/blabla.bla\///g' {} \;
>
>В результате работы этой команды будут найдены все файлы в каталоге /where/to/search
>
>и в них будет удалена подстрока "http://blabla.bla/" (точнее говоря, она будет заменена
>
>на пустую строку). При этом будут созданы резервные копии файлов с суффиксом
>".bak".
>Вот и все. Совсем ведь не трудно, правда? ;-)

Ага... просто... если еще учесть что оказывается нужно пользовать find...

В ответ, sed выдает:

sed: -e expression #1, char 1: unknown command: `.'

Эта ошибка мне обсалютно ничего не говорит...


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Поиск и замена/удаление"  
Сообщение от allez (ok) on 15-Дек-06, 13:30 
>Ага... просто... если еще учесть что оказывается нужно пользовать find...

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

sed -i .bak 's/http:\/\/blabla.bla\///g' *.html

Эта команда обработает все HTML-файлы в текущем каталоге.

>В ответ, sed выдает:
>
>sed: -e expression #1, char 1: unknown command: `.'
>
>Эта ошибка мне обсалютно ничего не говорит...

Сдается мне, что что-то не то вы в командной строке указали. Покажите, пожалуйста,
эту команду (скопируйте и вставьте сюда).

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Поиск и замена/удаление"  
Сообщение от zilonitiz email(ok) on 15-Дек-06, 14:15 
>Если все ваши файлы лежат в одном каталоге, то использование find совсем
>не обязательно.
>Возможен и такой вариант:
>
>sed -i .bak 's/http:\/\/blabla.bla\///g' *.html
>
>Эта команда обработает все HTML-файлы в текущем каталоге.

Нет, файле лежат в каталоге и в подкаталогах.

>>В ответ, sed выдает:
>>
>>sed: -e expression #1, char 1: unknown command: `.'
>>
>>Эта ошибка мне обсалютно ничего не говорит...
>
>Сдается мне, что что-то не то вы в командной строке указали. Покажите,
>пожалуйста,
>эту команду (скопируйте и вставьте сюда).


вот:

find /test/sed -type f -exec sed -i .bak 's/http:\/\/www.domain.net\///g'

сейчас выдает:

bash: /test/sed: is a directory

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Поиск и замена/удаление"  
Сообщение от allez (ok) on 15-Дек-06, 18:15 
>Нет, файле лежат в каталоге и в подкаталогах.

Вот в этом случае и нужна утилита find, чтобы не перебирать подкаталоги вручную.

>find /test/sed -type f -exec sed -i .bak 's/http:\/\/www.domain.net\///g'
>
>сейчас выдает:
>
>bash: /test/sed: is a directory

Вы не поставили "{} \;" в конце команды. Без этого опция -exec не может работать.
Прочитайте внимательнее мое сообщение. А заодно и man find. ;-)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Поиск и замена/удаление"  
Сообщение от zilonitiz email(ok) on 16-Дек-06, 09:56 
>>Нет, файле лежат в каталоге и в подкаталогах.
>
>Вот в этом случае и нужна утилита find, чтобы не перебирать подкаталоги
>вручную.
>
>>find /test/sed -type f -exec sed -i .bak 's/http:\/\/www.domain.net\///g'
>>
>>сейчас выдает:
>>
>>bash: /test/sed: is a directory
>
>Вы не поставили "{} \;" в конце команды. Без этого опция -exec
>не может работать.
>Прочитайте внимательнее мое сообщение. А заодно и man find. ;-)

Да, виноват... сорри за невнимательность...
пишем:
find /test/sed -type f -exec sed -i .bak 's/http:\/\/www.domain.net\///g' {} \;

получаем:
sed: -e expression #1, char 1: unknown command: `.'

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Поиск и замена/удаление"  
Сообщение от allez (ok) on 17-Дек-06, 15:30 
>Да, виноват... сорри за невнимательность...
>пишем:
>find /test/sed -type f -exec sed -i .bak 's/http:\/\/www.domain.net\///g' {} \;
>
>получаем:
>sed: -e expression #1, char 1: unknown command: `.'


Прошу прощения, я малость лопухнулся: sed ругается на точку в суффиксе ".bak". Попробуйте
убрать пробел между опцией -i и суффиксом:

find /test/sed -type f -exec sed -i.bak 's/http:\/\/www.domain.net\///g' {} \;

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Поиск и замена/удаление"  
Сообщение от zilonitiz email(ok) on 17-Дек-06, 15:56 
>>Да, виноват... сорри за невнимательность...
>>пишем:
>>find /test/sed -type f -exec sed -i .bak 's/http:\/\/www.domain.net\///g' {} \;
>>
>>получаем:
>>sed: -e expression #1, char 1: unknown command: `.'
>
>
>Прошу прощения, я малость лопухнулся: sed ругается на точку в суффиксе ".bak".
>Попробуйте
>убрать пробел между опцией -i и суффиксом:
>
>find /test/sed -type f -exec sed -i.bak 's/http:\/\/www.domain.net\///g' {} \;

нет проблем! Принимается! =)

Тут вот такая незадача что искомая фраза каким то макаром ищется и в графических файлах. Каким образом - ума непредложу... Собственно задача чутка изменилась... провести замену в HTML файла как?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "Поиск и замена/удаление"  
Сообщение от allez (ok) on 17-Дек-06, 18:35 
>Тут вот такая незадача что искомая фраза каким то макаром ищется и
>в графических файлах. Каким образом - ума непредложу... Собственно задача чутка
>изменилась... провести замену в HTML файла как?


А вот тут вам поможет опция -name команды find.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

17. "Поиск и замена/удаление"  
Сообщение от zilonitiz email(ok) on 17-Дек-06, 19:53 
>>Тут вот такая незадача что искомая фраза каким то макаром ищется и
>>в графических файлах. Каким образом - ума непредложу... Собственно задача чутка
>>изменилась... провести замену в HTML файла как?
>
>
>А вот тут вам поможет опция -name команды find.

Ага... пасиб мил человек!!! Ток вот теперь bak файлы не создает... Вот пример команды:

find /test/sed -name html -type f -exec sed -i.bak 's/http:\/\/www.domain.net\///g' {} \;

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

18. "Поиск и замена/удаление"  
Сообщение от allez (ok) on 18-Дек-06, 05:57 
>Ага... пасиб мил человек!!! Ток вот теперь bak файлы не создает... Вот
>пример команды:
>
>find /test/sed -name html -type f -exec sed -i.bak 's/http:\/\/www.domain.net\///g' {} \;
>

Хм, а я вот предпочитаю строковые аргументы заключать в кавычки (в этом случае sed на
точку не ругается):

find /test/sed -name "*.html" -type f -exec sed -i ".bak" 's/http:\/\/www.domain.net\///g' {} \;

Можно еще попробовать связку с xargs:

find /test/sed -name "*.html" -type f | xargs sed -i ".bak" 's/http:\/\/www.domain.net\///g'

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру