Как заменить данные в файле используя словарь

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
capsmolet
проходил мимо
Сообщения: 8
Зарегистрирован: 2011-12-29 15:16:03

Как заменить данные в файле используя словарь

Непрочитанное сообщение capsmolet » 2012-01-11 11:35:12

Здраствуйте!

Есть файл (fr.txt), где названия были созданы из русских и английских букв, например,
PЫHOK A - английскими + Ы
PЫHOK Ф - английскими + Ф
PЫHOK 27 - английскими

Я создал файл (словарь - dic.txt) с парами соответствий:
PЫHOK A;РЫНОК А
PЫHOK Ф;РЫНОК A
PЫHOK 27;РЫНОК 27

Как мне теперь брать пары соответствий из словаря и пройти по всему файлу до конца, чтобы заменить все вхождения первого (PЫHOK A) на второе (РЫНОК А).

Хотел вот так:

Код: Выделить всё

cat dic.txt | while read n
     do
         ...и запнулся, пока не силен ни в sed, ни в awk
         echo "$n"
done                         
Или так:

Код: Выделить всё

for s in `awk '{print}' ./dic.txt`
    do
        ...и... как дальше
        echo $s
done
Заранее благодарен!

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

kpp
лейтенант
Сообщения: 613
Зарегистрирован: 2009-08-05 16:10:46
Откуда: Украина Днепропетровск-Киев
Контактная информация:

Re: Как заменить данные в файле используя словарь

Непрочитанное сообщение kpp » 2012-01-11 15:41:47

Подразумевается :
vhod - файл с текстом, который нужно преобразовать;
dicture - файл - словарь;
tmp, tmp_vhod - временные файлы;
rezult - файл результата.

Код: Выделить всё

tFS="${IFS}"
IFS=";"
cp vhod tmp_vhod
while read lex zam
do
  sed 's/'"${lex}"'/'"${zam}"'/g' tmp_vhod > tmp
  mv tmp tmp_vhod
done < dicture
IFS="${tFS}"
mv tmp_vhod rezult
PS пора почитать литературу по SHELL. Есть на русском, например Дэвид Тейнсли "Linux и UNIX: программирование в SHELL", доступно в электронном виде, бесплатно, т.е. безвозмездно.
Нет, ребята, я не гордый. Не загадывая вдаль, так скажу: зачем мне орден? Я согласен на медаль.

capsmolet
проходил мимо
Сообщения: 8
Зарегистрирован: 2011-12-29 15:16:03

Re: Как заменить данные в файле используя словарь

Непрочитанное сообщение capsmolet » 2012-01-11 16:10:14

Спасибо!
По поводу литературы согласен, спасибо за книжку.