![]() |
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Странное поведение от сценария в Crontab | PilotGoose | Shell программирование и сценарии | 1 | 06-26-2008 10:54 AM |
| Помощь со своим странным скрипта! | kdyzsa | Shell программирование и сценарии | 1 | 06-15-2008 11:39 PM |
| Weird Sudo поведение | geomonap | UNIX перспективных И опытных пользователей | 1 | 02-03-2006 05:08 PM |
| каких-либо объяснений по этому оболочки сценарий поведения | xiamin | Shell программирование и сценарии | 9 | 11-09-2001 01:13 PM |
| Weird сценарий | Duckman | UNIX для чайников Вопросы И Ответы | 2 | 03-14-2001 01:53 PM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
Weird SED поведения в скрипте
Я написал небольшой скрипт для замены некоторых слов во все файлы в один каталог. Код:
#!/bin/sh #Get list of files to be edited file_list=`ls -p` for i in $file_list do echo "Processing $i" alteredi=`echo "$i" | sed -e 's/\//d/'` if [ $i = $alteredi ] then if [ $i != "maketest" ] then #actual altering cat $i | sed -e "s/login\//login.tst\//" > $i cat $i | sed -e "s/cyberkd\//cyberkd.tst\//" > $i cat $i | sed -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" > $i echo " $i has been altered" else echo " Not altering myself" fi else echo " Not altering directories" fi done Теперь, когда я запускаю этот сценарий в качестве обычного пользователя, только первые 4 Kb в файл обрабатывается. Таким образом все файлы размером более 4 Kb являются сокращение наполовину. Оставшиеся байтах просто исключены из нового файла. Когда я побежал сценарий, как корень, 8kb были обработаны. Есть ли способ обработать все файлы? Когда я кота большой текстовый файл весь файл получает напечатан на моем экране. Спасибо заранее. |
|
||||
|
Не читать и писать в один и тот же файл, и с помощью кото SED является излишним, заменить эти строки: Код:
cat $i | sed -e "s/login\//login.tst\//" > $i cat $i | sed -e "s/cyberkd\//cyberkd.tst\//" > $i cat $i | sed -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" > $i с: Код:
sed -e "s/login\//login.tst\//" -e "s/cyberkd\//cyberkd.tst\//" -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" "$1" > temp.file mv temp.file "$1" Если вы SED Версия поддерживает флаг-I позволяет редактировать файл на месте, без использования временных файлов. Код:
sed -i -e "s/login\//login.tst\//" -e "s/cyberkd\//cyberkd.tst\//" -e "s/\/db_connect.inc.php/\/testdb_connect.inc.php/" "$1" Привет Последний раз редактировалось Franklin52; на 08-30-2008 08:52 AM.. |
|
||||
|
Спасибо. Это работает!
|
![]() |
| Закладки |
| Теги |
| кошка, SED, скорлупа |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|