Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Скрипт по замене слов в файле  (Прочитано 704 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dan_Shady

  • Автор темы
  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
Ситуация такая:

на вход дается два файла, в одном исходный текст в виде:
Begin "Имя блока1" "имя1" "имя2" ... "имяN"
тут какой-то текст, не важно
End "Имя блока1"

Begin "Имя блока2" "имя1" "имя2" ... "имяN"
тут какой-то текст, не важно
End "Имя блока2"
Во втором дается имя блока в котором нужно провести замену имен, выглядит так:

"Имя блока1" "имя1" "заменить на это"
"Имя блока1" "имя2" "заменить на это"
"Имя блока2" "имя1" "заменить на это"
Скрипт должен произвести замену в тех блоках тех имен, которые указаны во втором файле


Пользователь решил продолжить мысль 28 Мая 2014, 11:43:03:
Немного покапавшись и получив некоторые рекомендации и помощь смог сделать команду которая делает все это, вот код:
cat replacements.txt | while read BL OLD NEW ; do sed -i -re "/begin $BL/s/$OLD/$NEW/g" exmp.sp; doneТеперь проблема в том чтобы это все сделать скриптом, конкретно не знаю как сделать так чтобы скрипт проверял получены ли нужные для работы файлы и работал с ними уже дальше
« Последнее редактирование: 28 Мая 2014, 11:43:03 от Dan_Shady »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Скрипт по замене слов в файле
« Ответ #1 : 31 Мая 2014, 14:44:20 »
так это ж и есть готовый скрипт.
Код: (bash) [Выделить]
#!/bin/bash
TARGET=exmp.sp
RLIST=replacements.txt
if [ -s "$TARGET" -a -s "$RLIST" ];
then
  while read BL OLD NEW ;
  do
    sed -i -re "/Begin "$BL"/,/End "$BL"/s/$OLD/$NEW/g" "$TARGET";
  done < "$RLIST";
fi
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн nrubanov

  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Скрипт по замене слов в файле
« Ответ #2 : 04 Июня 2014, 17:34:59 »
А что за $BL ? Не совсем понятно

У меня сейчас похожая задача, только меток не нужно.

https://forum.ubuntu.ru/index.php?topic=244991.0

Может подскажете что в аргументах sed поменять ?

 

Страница сгенерирована за 0.07 секунд. Запросов: 25.