The OpenNET Project / Index page

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

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

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

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

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

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

Ответить | Правка | Cообщить модератору

Оглавление

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


1. "Скрипт для поиска и замены текста"  +/
Сообщение от михалыч (ok) on 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

??

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Скрипт для поиска и замены текста"  +/
Сообщение от mrrrr on 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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Скрипт для поиска и замены текста"  +/
Сообщение от LSTemp (ok) on 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 и подобных фенечек не всегда очевидно (чаще о них просто не знают). +.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

3. "Скрипт для поиска и замены текста"  +/
Сообщение от LSTemp (ok) on 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


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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