Задание

Написать программу, которая выполняет ввод текстовой информации из файла или стандартного потока ввода, осуществляет преобразование информации в соответствии с вариантом задания (см. ниже) и выводит преобразованную информацию в файл или в стандартный поток вывода.

Строка запуска программы имеет следующий формат:

$ prog_name [options] [input_file [result_file]]

где

  • options - последовательность ключей, настраивающих поведение программы. Общие для всех вариантов опции перечислены в таблице 1. Некоторые варианты могут предусматривать дополнительные опции. В случае передачи в командной строке не предусмотренных вариантом опций программа должна сообщать об ошибке. Более подробно о правилах разбора опций можно прочитать в [4]. В большинстве случаев опции являются необязательными (т.е. могут не указываться в командной строке);
  • input_file - путь к файлу, из которого нужно считывать информацию;
  • result_file - путь к файлу, в который нужно вывести результаты преобразования. Этот аргумент является необязательным и может задаваться в командной строке только в том случае, если был задан исходный_файл. Если результирующий файл не задан, результаты преобразования записываются в стандартный поток вывода. Результирующий файл может совпадать с исходным.

Если input_file не задан, то это значит, что строки исходного текста программа должна читать из стандартного потока ввода.

Общие для всех вариантов опции:

  • -b=N - Выполнять действия, предусмотренные вариантом программы, начиная со строки номер N исходного текста. Если эта опция не задана, то действия выполняются, начиная с первой строки текста.

  • -e=M - Выполнять действия, предусмотренные вариантом программы, до строки номер M исходного текста включительно. Если эта опция не задана, то действия выполняются до конца текста.

Специфичные для варианта опции:

Заменить все вхождения одной последовательности символов в файле на другую.

  • -f=search_string - Задает последовательность символов, которую нужно искать. Строка может содержать пробелы – в этом случае она должна заключаться в кавычки;
  • -r=replace_string - Задает строку замены. Строка может содержать пробелы - в этом случае она должна заключаться в кавычки;
  • -i - Не различать строчные и заглавные буквы при сравнении.

Опции -f и -r являются обязательными.