The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
внесение изменений в файл, !*! GHopper, 30-Ноя-06, 04:46  [смотреть все]
Здравствуйте!
Есть файл, следующего содержания:

#comment1
#comment2
var1:varvalue1
var2:varvalue2
#comment3
var3:varvalue3

Нужно из shell-скрипта изменить значения всех varvalue, не изменяя всего остального. Как это сделать наиболее правильно?

  • внесение изменений в файл, !*! allez, 06:39 , 30-Ноя-06 (1)
    >Здравствуйте!
    >Есть файл, следующего содержания:
    >
    >#comment1
    >#comment2
    >var1:varvalue1
    >var2:varvalue2
    >#comment3
    >var3:varvalue3
    >
    >Нужно из shell-скрипта изменить значения всех varvalue, не изменяя всего остального. Как
    >это сделать наиболее правильно?

    Вот вам пример такого скрипта:

    ==========================================
    #!/usr/local/bin/bash

    COMMAND="`which sed`"
    FILE=$1; shift

    for arg in "$@"
    do
        var=`echo $1 | cut -d '=' -f 1`
        value=`echo $1 | cut -d '=' -f 2`
        COMMAND="${COMMAND} -e 's/$var:.*/$var:$value/g'"
        shift
    done

    eval "$COMMAND $FILE > /tmp/tmpfile"
    mv -f /tmp/tmpfile $FILE
    ==========================================

    Запускается так: "script.sh <file> variable=value ..."

    Пример использования:

    $ cat /tmp/file
    #comment1
    #comment2
    var1:varvalue1
    var2:varvalue2
    #comment3
    var3:varvalue3

    $ ./script.sh /tmp/file var1=newvalue1 var2=newvalue2

    $ cat /tmp/file
    #comment1
    #comment2
    var1:newvalue1
    var2:newvalue2
    #comment3
    var3:varvalue3

    P. S. Ну, а уж дальнейшую доработку скрипта оставляю вам. В качестве, так сказать,
    домашнего задания. :-)

    • внесение изменений в файл, !*! GHopper, 09:21 , 30-Ноя-06 (2)
      >>Здравствуйте!
      >>Есть файл, следующего содержания:
      >>
      >>#comment1
      >>#comment2
      >>var1:varvalue1
      >>var2:varvalue2
      >>#comment3
      >>var3:varvalue3
      >>
      >>Нужно из shell-скрипта изменить значения всех varvalue, не изменяя всего остального. Как
      >>это сделать наиболее правильно?
      >
      >Вот вам пример такого скрипта:
      >
      >==========================================
      >#!/usr/local/bin/bash
      >
      >COMMAND="`which sed`"
      >FILE=$1; shift
      >
      >for arg in "$@"
      >do
      >    var=`echo $1 | cut -d '=' -f 1`
      >
      >    value=`echo $1 | cut -d '=' -f 2`
      >
      >    COMMAND="${COMMAND} -e 's/$var:.*/$var:$value/g'"
      >    shift
      >done
      >
      >eval "$COMMAND $FILE > /tmp/tmpfile"
      >mv -f /tmp/tmpfile $FILE
      >==========================================
      >
      >Запускается так: "script.sh <file> variable=value ..."
      >
      >Пример использования:
      >
      >$ cat /tmp/file
      >#comment1
      >#comment2
      >var1:varvalue1
      >var2:varvalue2
      >#comment3
      >var3:varvalue3
      >
      >$ ./script.sh /tmp/file var1=newvalue1 var2=newvalue2
      >
      >$ cat /tmp/file
      >#comment1
      >#comment2
      >var1:newvalue1
      >var2:newvalue2
      >#comment3
      >var3:varvalue3
      >
      >P. S. Ну, а уж дальнейшую доработку скрипта оставляю вам. В качестве,
      >так сказать,
      >домашнего задания. :-)


      Это будет работать в /bin/sh?




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

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