Задание 4 (индивидуальное): обработка текстовых файлов

  1. Написать сценарий, который удаляет все комментарии из сценария, имя которого задаётся в командной строке. При этом строка «#! /bin/bash» не должна удаляться. Если сценарий запущен без аргументов, он должен вывести сообщение об использовании сценария.

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

  3. Написать сценарий, который будет читать текст из заданного файла и выводить построчно на stdout, добавляя при этом дополнительные пустые строки так, чтобы в результате получился вывод с двойным межстрочным интервалом. Если сценарий запущен без аргументов, он должен вывести сообщение об использовании сценария.

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

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

  6. Написать сценарий, который будет добавлять символ «-» в начало и конец строки из заданного файла, которая совпадают с её номером. Например, файл с содержимым:

    abc
    2
    5
    4
    

    должен измениться на:

    abc
    -2-
    5
    -4-
    

    Если сценарий запущен без аргументов, он должен вывести сообщение об использовании сценария.

  7. Написать сценарий, который принимает два пути к файлам и копирует из первого файла во второй все строки, начинающиеся с символов «//». Если сценарий запущен не с двумя аргументами, он должен вывести сообщение об использовании сценария.

  8. Написать сценарий, который будет читать текст из заданного файла и выводить построчно на stdout, добавляя в конец каждой строки нужное количество символов «.» так, чтобы строки короче 80 символов стали по длине равны 80 символам. Если сценарий запущен без аргументов, он должен вывести сообщение об использовании сценария.

  9. Написать сценарий, который будет читать текст из заданного файла и выводить в stdout его содержимое, заменяя переводы строк на пробелы и добавляя самостоятельно переводы строки так, чтобы на выходе формировались строки длиной 80 символов. Если сценарий запущен без аргументов, он должен вывести сообщение об использовании сценария.

  10. Написать сценарий, который будет читать последовательность команд из заданного файла (по одной на каждой строке) и исполнять их. Вывод команд в стандартные потоки вывода и ошибок необходимо перенаправить в указанный в параметрах сценария текстовый файл. Перед выводом очередной команды в этот файл необходимо записать строку из символов «----------» и номера команды после пробела. Если сценарий запущен не с двумя аргументами, он должен вывести сообщение об использовании сценария.

  11. Написать сценарий, который будет читать текст из заданного файла и выводить построчно на stdout, при этом вместо нескольких подряд идущих пустых строк необходимо заменить одной пустой строкой. Если сценарий запущен без аргументов, он должен вывести сообщение об использовании сценария.

  12. Написать сценарий, который будет читать текст из заданного файла и выводить на stdout все его строки максимальной длины вместе с их номерами. Если сценарий запущен не с одним аргументом, он должен вывести сообщение об использовании сценария

  13. Написать сценарий, который будет читать текст из заданного файла и выводить построчно на stdout, при этом во всех строках, длина которых меньше 80 символов, разделять слова одинаковым количеством пробелов для данной строки (с точностью до 1 пробела) так, чтобы длина строки составляла 80 символов. Пример: пусть в строке есть три слова: первое состоит из 10 символов, второе из 11, третье из 12. Не имеет значения, сколько между ними пробелов в исходном файле. На выходе между первым и вторым словом должно быть расположено 24 пробела, между вторым и третьим — 23 пробела (10 + 24 + 11 + 23 + 12 = 80).

  14. Написать сценарий, который удаляет все комментарии из сценария, имя которого задаётся в командной строке. При этом строка «#! /bin/bash» не должна удаляться. Если сценарий запущен без аргументов, он должен вывести сообщение об использовании сценария.

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

  16. Написать сценарий, который будет читать текст из заданного файла и выводить построчно на stdout, добавляя при этом дополнительные пустые строки так, чтобы в результате получился вывод с двойным межстрочным интервалом. Если сценарий запущен без аргументов, он должен вывести сообщение об использовании сценария.

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

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

  19. Написать сценарий, который будет добавлять символы «-*-» в начало и конец строки из заданного файла, которая совпадают с её номером. Например, файл с содержимым:

    abc
    2
    5
    4
    

    должен измениться на:

    abc
    -"-2-"-
    5
    -"-4-"-
    

    Если сценарий запущен без аргументов, он должен вывести сообщение об использовании сценария.

  20. Написать сценарий, который принимает два пути к файлам и копирует из первого файла во второй все строки, начинающиеся с символов «/*/». Если сценарий запущен не с двумя аргументами, он должен вывести сообщение об использовании сценария.

  21. Написать сценарий, который будет читать текст из заданного файла и выводить построчно на stdout, добавляя в конец каждой строки нужное количество символов «.» так, чтобы строки короче 80 символов стали по длине равны 80 символам. Если сценарий запущен без аргументов, он должен вывести сообщение об использовании сценария.

  22. Написать сценарий, который будет читать текст из заданного файла и выводить в stdout его содержимое, заменяя переводы строк на * и добавляя самостоятельно переводы строки так, чтобы на выходе формировались строки длиной 80 символов. Если сценарий запущен без аргументов, он должен вывести сообщение об использовании сценария.

  23. Написать сценарий, который будет читать последовательность команд из заданного файла (по одной на каждой строке) и исполнять их. Вывод команд в стандартные потоки вывода и ошибок необходимо перенаправить в указанный в параметрах сценария текстовый файл. Перед выводом очередной команды в этот файл необходимо записать строку из символов «----------» и номера команды после пробела. Если сценарий запущен не с двумя аргументами, он должен вывести сообщение об использовании сценария.

  24. Написать сценарий, который будет читать текст из заданного файла и выводить построчно на stdout, при этом вместо нескольких подряд идущих пустых строк необходимо заменить одной пустой строкой. Если сценарий запущен без аргументов, он должен вывести сообщение об использовании сценария.

  25. Написать сценарий, который будет читать текст из заданного файла и выводить на stdout все его непустые строки минимальной длины вместе с их номерами. Если сценарий запущен не с одним аргументом, он должен вывести сообщение об использовании сценария

  26. Написать сценарий, который будет читать текст из заданного файла и выводить построчно на stdout, при этом во всех строках, длина которых меньше 60 символов, разделять слова одинаковым количеством пробелов для данной строки (с точностью до 1 пробела) так, чтобы длина строки составляла 60 символов. Пример: пусть в строке есть три слова: первое состоит из 10 символов, второе из 11, третье из 12. Не имеет значения, сколько между ними пробелов в исходном файле. На выходе между первым и вторым словом должно быть расположено 14 пробела, между вторым и третьим — 13 пробела (10 + 14 + 11 + 13 + 12 = 60).