The UNIX and Linux Forums  
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.

Go Back   В UNIX и Linux Форумы > Топ форумы > Shell программирование и сценарии
.
Google unix.com



Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь.

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
Таблицы для запроса для поиска по базе данных пользователей из скорлупы сценарий вершина Shell программирование и сценарии 0 04-10-2009 05:18 PM
найти ли обновить запрос выполнен успешно или нет, используя КШ Сценарист ali560045 Shell программирование и сценарии 3 01-07-2009 01:41 AM
Найти-mtime запроса Раджата UNIX для чайников Вопросы И Ответы 1 07-09-2008 07:12 AM
вопрос о поиске и-EXEC shriashishpatil UNIX перспективных И опытных пользователей 2 04-12-2007 01:16 AM
Найти-Пермь запроса napolayan UNIX для чайников Вопросы И Ответы 1 11-28-2006 02:28 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack Резьба Инструменты Искать в этом Thread Оценить Thread Режимы дисплея
Old 05-26-2009
lightdensity lightdensity is offline
Зарегистрированный пользователь
  
 

Регистрация: Май 2009
Сообщений: 6
Найти и заменить запроса

Здравствуйте ППЛ,

Я написал скрипт, который находит несколько слов матча и замены его новыми словами.
Я server.conf файл, который выглядит как
Код:
### Welcome to server ###
### Server address and port ###
 
Server=127.0.0.1 
### Replace Server=0.0.0.0 ###
 
ServerPort=0
### Replace ServerPort=1 ####
### Enable Server ##
 
Enable Server=1
 
### Replace Enable Server=0 ###
### END OF FILE ##
-------------------------------------------------- ---------
Я написал код для него, как показано ниже
Код:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
 IFS=""
        for line in `cat ${FILE}`; do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done
Но когда я запускаю моего сценария он только замещает первый матч (Server \u003d 0.0.0.0). Оставшиеся два матча doesn't изменения.
Я не знаю, что не так с моим кодом.

Может кто поможет мне в этом?
Спасибо заранее

Последний раз редактировалось lightdensity; на 05-26-2009 12:14 PM..
Old 05-26-2009
devtakh devtakh is offline
Зарегистрированный пользователь
  
 

Регистрация: Oct 2007
Место проведения: Бангалор
Сообщений: 514
Код:
sed '/Server=127.0.0.1/{s//Server=0.0.0.0/g}
/ServerPort=0/{s//ServerPort=1/g}
/Enable Server=1/{s//Enable Server=0/g}
' /opt/server.conf > /opt/new_server.conf
-Devaraj Takhellambam
Old 05-26-2009
lightdensity lightdensity is offline
Зарегистрированный пользователь
  
 

Регистрация: Май 2009
Сообщений: 6
Цитата:
Первоначально Послано devtakh View Post
Код:
sed '/Server=127.0.0.1/{s//Server=0.0.0.0/g}
/ServerPort=0/{s//ServerPort=1/g}
/Enable Server=1/{s//Enable Server=0/g}
' /opt/server.conf > /opt/new_server.conf
-Devaraj Takhellambam
Спасибо за ваш ответ .. На самом деле я новичок в оболочке сценариев
Код:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
 IFS=""
        for line in `cat ${FILE}`; do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done
Итак, как узнать, какие на право строки??

спасибо
Old 05-26-2009
BubbaJoe's Avatar
BubbaJoe BubbaJoe is offline
Зарегистрированный пользователь
  
 

Регистрация: Oct 2008
Место проведения: Санкт-Луи
Сообщений: 153
Ваш МФСМЦ установлен неправильно. В IFS \u003d "" говорится, нет разделителя, чтобы весь файл читается. Вы можете использовать только МФСМЦ есть на самом деле является seperator между каждой области. Поэтому кота $ ФАЙЛОВ не даст вам построчно она даст вам файл, а также на местах сразу. Таким образом, соответствующие только 1 раз. Так вы действительно хотите посмотреть на каждую строку в отчете вы должны использовать AWK или SED Чтобы найти и заменить текст.

Так что это будет работать для Вас, который был размещен в котором говорится, devtakh поиск весь файл и замените шаблон соответствия с данным шаблон для каждого экземпляра вы хотите изменить. Она найдет каждый из них в отдельности и изменить файл так, как вы хотите.

SED '/ Server \u003d 127.0.0.1 / (S / / Server \u003d 0.0.0.0 / G)
/ ServerPort \u003d 0 / (S / / ServerPort \u003d 1 / G)
/ Включить Server \u003d 1 / (S / / Разрешить Server \u003d 0 / G)
'/ ОПТ / server.conf> / ОПТ / new_server.conf
Old 05-26-2009
lightdensity lightdensity is offline
Зарегистрированный пользователь
  
 

Регистрация: Май 2009
Сообщений: 6
Цитата:
Первоначально Послано BubbaJoe View Post
Ваш МФСМЦ установлен неправильно. В IFS \u003d "" говорится, нет разделителя, чтобы весь файл читается. Вы можете использовать только МФСМЦ есть на самом деле является seperator между каждой области. Поэтому кота $ ФАЙЛОВ не даст вам построчно она даст вам файл, а также на местах сразу. Таким образом, соответствующие только 1 раз. Так вы действительно хотите посмотреть на каждую строку в отчете вы должны использовать AWK или SED Чтобы найти и заменить текст.
Спасибо за помощь ..

Так что, если я
IFS \u003d "\ N \ T"

, чем я полагаю, кошку $ ФАЙЛОВ даст построчно ..

OK!! Я постараюсь это .. Тем не могли бы вы проверить мои остальные код .. и ли моя код является правильным или нет.

спасибо
Old 05-26-2009
devtakh devtakh is offline
Зарегистрированный пользователь
  
 

Регистрация: Oct 2007
Место проведения: Бангалор
Сообщений: 514
Цитата:
Первоначально Послано lightdensity View Post
Спасибо за ваш ответ .. На самом деле я новичок в оболочке сценариев
Код:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
 IFS=""
        for line in `cat ${FILE}`; do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done
Итак, как узнать, какие на право строки??

спасибо
Это будет пустой тратой ресурсов, использовать скрипт оболочки при SED справимся с ней. Вам не нужно проверять, если слово существует, и если она существует, а затем заменить его. SED может сделать это за вас.
Но incase нужно делать .. Я предлагаю Вам использовать в то время как цикл, а не для петель с кошкой команды.

Код:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
        
       while read line
   do
        #echo ${line}
        if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
        then
                 echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
        then
                echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
        elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
        then
                echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
        else
                echo ${line} >>$NEW_FILE
        fi
        done < $FILE
-Devaraj Takhellambam
Old 05-27-2009
lightdensity lightdensity is offline
Зарегистрированный пользователь
  
 

Регистрация: Май 2009
Сообщений: 6
Цитата:
Первоначально Послано devtakh View Post
Код:
sed '/Server=127.0.0.1/{s//Server=0.0.0.0/g}
/ServerPort=0/{s//ServerPort=1/g}
/Enable Server=1/{s//Enable Server=0/g}
' /opt/server.conf > /opt/new_server.conf
-Devaraj Takhellambam
Привет Devaraj Takhellambam,

Ваше решение отлично работает ... но я стоят новые задачи в настоящее время ... На самом деле я не упоминал моего полного входного файла, которая
Код:
### Welcome to server ###
### Server address and port ###
 
Server=127.0.0.1 
### Replace Server=0.0.0.0 ###
 
ServerPort=0
### Replace ServerPort=1 ####
### Enable Server ##
 
Enable Server=1
 
### Replace Enable Server=0 ###
 
Enable Agent=1
Enable ip=1
 
### Now I dont need to change above two options ###
### END OF FILE ##
Так что я осуществил выглядеть
Код:
FILE="/opt/server.conf"
NEW_FILE="/opt/new_server.conf"
    exec 0<$FILE
    while read line
do
     #echo ${line}
     if [ -n "`echo ${line} | grep 'Server=127.0.0.1'`" ]  #grep command searches for right string
     then
              echo ${line} | sed 's|Server=127.0.0.1|Server=0.0.0.0|g' >>$NEW_FILE
     elif [ -n "`echo ${line} | grep 'ServerPort=0'`" ]
     then
             echo ${line} | sed 's|ServerPort=0|ServerPort=1|g' >>$NEW_FILE
     elif [ -n "`echo ${line} | grep 'Enable Server=1'`" ]
     then
             echo ${line} | sed 's|Enable Server=1|Enable Server=0|g' >>$NEW_FILE
     else
             echo ${line} >>$NEW_FILE
     fi
     done < $FILE
Выходной файл выглядит
Код:
Server=0.0.0.0
ServerPort=1
Enable Server=0
Поэтому, когда мне исполнить мою кодекса, выходной файл содержит строки, которые я изменил, Есть определенные строки, которые я хочу, чтобы скопировать, как он.

К сожалению я bothering вас много ...

спасибо
Closed Thread

Закладки

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 12:44 PM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0