Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Переводчик на Shell / 7 сообщений из 7, страница 1 из 1
06.10.2011, 18:03
    #37471536
1123Alex1233
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переводчик на Shell
Помогите сделать следующее задание:
Shell-программа читает текстовый файл на английском языке и, используя словарь формата:
english_word0 русское_слово0
english_word1 русское_слово1
english_word2 русское_слово2
переводит его на русский язык. Словоформы не учитываются, лексические и грамматические правила — тоже.
...
Рейтинг: 0 / 0
06.10.2011, 19:50
    #37471720
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переводчик на Shell
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
$ cat dic.txt
hello привет
 100500  стопицот
face фейс
table табло

$ cat input.txt
hello
face тебя об table  100500  раз
bye!

$ nawk  'BEGIN {while((getline < "dic.txt")) trans[$1] = $2;} {for (i=1;i<=NF;i++) if(trans[$i]) $i = trans[$i]; print}' input.txt
привет
фейс тебя об табло стопицот раз
bye!

$
...
Рейтинг: 0 / 0
07.10.2011, 11:44
    #37472510
1123Alex1233
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переводчик на Shell
'BEGIN {while((getline < "dic.txt")) trans[$1] = $2;} {for (i=1;i<=NF;i++) if(trans[$i]) $i = trans[$i]; print}'

Это на каком языке написано? И желательно прокомментировать.
...
Рейтинг: 0 / 0
07.10.2011, 12:57
    #37472712
MazoHist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переводчик на Shell
Скриптовый язык AWK
...
Рейтинг: 0 / 0
07.10.2011, 13:16
    #37472758
1123Alex1233
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переводчик на Shell
спасибо
...
Рейтинг: 0 / 0
07.10.2011, 13:34
    #37472801
1123Alex1233
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переводчик на Shell
Поясните все-таки эту строку
BEGIN {while((getline < "dic.txt")) trans[$1] = $2;} {for (i=1;i<=NF;i++) if(trans[$i]) $i = trans[$i]; print}
пожалуйста
...
Рейтинг: 0 / 0
08.10.2011, 16:15
    #37474037
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Переводчик на Shell
1123Alex1233Поясните все-таки эту строку
пожалуйста
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
# BEGIN - Выполняется перед началом обработки входного файла
BEGIN {
  # читаем построчно файл словаря и строим ассоциативный массив "trans"
  # ключ - первое слово в строке, значение - второе слово 
  while((getline < "dic.txt")) 
    trans[$1] = $2;
} 

# без указания паттерна следующий блок будет выполняться для каждой строки входного файла
{
  # Цикл по полям строки. NF - системная переменная awk,
  # содержит количество полей в строке
  for (i=1;i<=NF;i++) 
    # для каждого поля ищем замену в ранее заготовленном массиве
    if(trans[$i]) 
      # и если находим - то заменяем текущее значение поля "переводом"
      $i = trans[$i]; 
  # выводим строку
  print
}
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Переводчик на Shell / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]