URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9758
[ Назад ]

Исходное сообщение
"Скрипт для поиска и замены текста"

Отправлено iiukyr4uk , 11-Окт-13 15:31 
Всем привет, столкнулся с проблемой.
Есть 2 файла, один имеет вид:
origin=SOFT(...)
...
...

второй имеет вид:
s=name
v=1
d=0

И вот надо мне при помощи скрипта считать что то написано во втором после s= и заменить на слово SOFT в первом файле.

Помогите плиз. Заранее спасибо


Содержание

Сообщения в этом обсуждении
"Скрипт для поиска и замены текста"
Отправлено михалыч , 11-Окт-13 17:10 
Хрен победишь где менять.

#!/bin/sh
sed "s/\(SOFT\).*/\1($(awk -F"=" '/s/ {print $2}' two))/" one
или
sed "s/SOFT/$(awk -F"=" '/s/ {print $2}' two)/" one

??


"Скрипт для поиска и замены текста"
Отправлено mrrrr , 12-Окт-13 13:24 
#!/usr/bin/env bash  

file1='1.txt'
file2='2.txt'
word_for_repl='SOFT'

get_s() {
  while read line; do
    if [[ $line =~ s=(.*) ]]
    then
      echo ${BASH_REMATCH[1]}
    fi
  done < <(cat $file2)
}

s_repl() {
  s=$(get_s)
  while read line; do
    if [[ $line =~ $s ]]
    then
      echo ${line/$s/$word_for_repl}
    else
      echo $line
    fi
  done < <(cat $file1)
}

echo "$(s_repl)" > $file1


"Скрипт для поиска и замены текста"
Отправлено LSTemp , 21-Ноя-13 05:24 
>[оверквотинг удален]
>   while read line; do
>     if [[ $line =~ $s ]]
>     then
>       echo ${line/$s/$word_for_repl}
>     else
>       echo $line
>     fi
>   done < <(cat $file1)
> }
> echo "$(s_repl)" > $file1

По задаче надо значение origin из первого файла (т.е SOFT(..)) пернести в параметр s второго файла. ИМХО в результате должно быть:
value(file2:s)=value(file1:origin)

Т.е get_s() должна grep-ать file1, а вывод должен быть в file2 ИМХО.

Все равно хороший подход. Использование BASH_REMATCH и подобных фенечек не всегда очевидно (чаще о них просто не знают). +.


"Скрипт для поиска и замены текста"
Отправлено LSTemp , 21-Ноя-13 04:58 
> Всем привет, столкнулся с проблемой.
> Есть 2 файла, один имеет вид:
> origin=SOFT(...)
> ...
> ...
> второй имеет вид:
> s=name
> v=1
> d=0
> И вот надо мне при помощи скрипта считать что то написано во втором

скрипте?

похоже все-таки в файле. если речь про файл, то первый - это тот, который "один"? (они оба "имеют вид" - это заявка на победу! ;))

> после s= и заменить на слово SOFT в первом файле.

Хотите считать из одного файла данные, а потом константу во  второй файл писать? (именно так Ваш запрос и выглядит - это победа!!!)

> Помогите плиз. Заранее спасибо

Помогаю:

1) данные:
- есть файл-1 (не "один файл") - пишем формат
- есть файл-2 (не "другой/второй файл")- пишем формат

2) хочу:
> И вот надо мне при помощи скрипта считать что то написано во втором после s= и заменить > на слово SOFT в первом файле.

_ИЗ_ файл-2 надо получить данные такие-то... и поместить их _В_ файл-1 (замена, добавление, условия, итд)

PS
задолбали такие вопросы - русский язык уже не рулит -  вставить/заменить "ИЗ в В" уже не модно видимо.

PSS
2iiukyr4uk спец: http://eruditov.net/photo/obman/kuby/1-0-557