Вывести массив в обратном порядке до конца файла

Обновлено: 21.11.2024

Задача состоит в том, чтобы напечатать строки файла в обратном порядке, в котором они появляются в файле. Сценарий bash и некоторые другие приемы будут представлены ниже, чтобы сделать это. Мы можем сделать это с помощью tac и sed , но здесь мы сделаем это без каких-либо из этих инструментов и будем использовать только встроенный bash, массивы bash и перенаправление.

Процесс заключается в чтении каждой строки входного файла в массиве, где каждый элемент массива содержит строку, и после завершения чтения мы будем печатать массив от последнего к первому в обратном порядке, что приведет к печати файла в обратном порядке. заказ.
Мы непосредственно представляем сценарий ниже, а затем описываем.

Сценарий

Сохраните приведенный выше скрипт как «my_tac.sh». Синтаксис для использования этого скрипта: my_tac.sh имя_файла

Сначала мы получаем переданный аргумент в переменную file_name . Проверяем, равно ли количество переданных параметров нулю, то есть ничего не передается. Если ничего не передано, показать ошибку. В противном случае проверьте, существует ли переданное имя файла. Если он не существует, выйти, иначе ничего не делать.

Мы будем рассматривать каждую строку файла как одно поле при чтении в массив, а две строки разделены символом новой строки a \n. Мы устанавливаем IFS, который является разделителем полей ввода, на \n . Примечание. Заключение $’\n’ в кавычки заменит \n соответствующим символом новой строки. Это позволяет процессу сохранять начальные пробелы в строке.
Далее мы объявляем массив.

В цикле while строка while read -r читает из файла, имя которого находится в «имя_файла». Содержимое файла перенаправляется в цикл while, и функция read получает его оттуда. На каждой итерации он считывает по одной строке и сохраняет в переменную line. Затем он присваивается следующему элементу массива в теле цикла. Обратите внимание, что при назначении строки мы также добавляем новую строку \n в конец строки. Позже будет объяснено, почему это делается.
Опция -r в read -r указывает команде рассматривать обратную косую черту \ как обычный символ как часть файл, а не escape-символ. Когда файл заканчивается, цикл завершается.

Здесь нужно отметить две вещи. Во-первых, обратите внимание на двойные кавычки вокруг "$line" в выражениях массива. Это обеспечит чтение пустых строк только с \n, а также сохранение форматирования пробелов в файле.

Во-вторых, рассмотрите a, у которого последняя строка не является пустой строкой. То есть последняя строка содержит некоторый текст и заканчивается без новой строки и просто заканчивается NUL. В этом случае на последней итерации команда read будет читать последнюю строку, но вернет false, так как она не завершается никакими символами IFS, и тело цикла while не будет введено , поэтому последняя строка не сохраняется в массиве. В этом случае, когда цикл завершается, line не равно null. Так как это последняя строка файла, поэтому в обратном порядке это будет первая строка, поэтому мы печатаем ее напрямую, а не сохраняем. Обратите внимание: поскольку эта строка не заканчивается новой строкой, для ее вывода используется echo -n. Опция -n команды echo не завершает строку новой строкой. Таким образом, в этом случае последняя строка и предпоследняя строка будут напечатаны рядом (что правильно). С другой стороны, если строка заканчивается новой строкой, то содержимое line в конце цикла равно null и не удовлетворяет if - fi и просто доход. Эта условная обработка последней строки позволяет этому процессу правильно печатать последнюю строку, не печатая новую строку в конце.

Далее мы вычисляем длину массива и корректируем индекс массива, который представляет собой количество строк, содержащихся в файле, и сохраняем в переменную i, и она повторяется от значения из i в 0 и содержимое массива печатается в обратном порядке. При назначении строк массиву мы не добавили новую строку явно ко всем строкам, которые были найдены в цикле. echo -E используется для печати строк в обратном порядке. -E отключает интерпретацию символов обратной косой черты, поэтому, если файл содержит «\n» или «\t» или другие как часть текста файла, они не будут интерпретироваться как специальные символы при печати как таковые. является. Отсутствие переключателя "-n" в команде echo также приводит к печати новой строки после каждой строки, напечатанной в каждой итерации цикла. Обратите внимание, что мы рассмотрели особый случай, когда файл с последней строкой, непосредственно заканчивающейся на EOF/NUL, обрабатывается в if - fi после цикла while и обсуждался выше.

Таким образом, файл печатается в обратной последовательности строк.

Тактика

Существует программа tac, которую вы можете использовать в bash, которая поставляется с основными утилитами.Это действует точно так же, как программа cat .

Приведенная выше команда просто напечатает содержимое файла в обратном порядке строк. Вместо этого я бы предпочел использовать этот инструмент для реверсирования файлов.

Есть и другие способы распечатать файл в обратном порядке строк, как в классном примере с sed ниже

Разбирайтесь сами, я не седдер!

Обновить

15.03.2011 : Устранена ошибка: Терминал, не завершающий \n печать строки.
16.03.2011 : Обновлены код и описание : теперь последняя строка файлов с нулевым завершением печатается правильно.
13.05.2011 : Устранена ошибка: предыдущая версия печатала символы обратной косой черты внутри файла как специальные символы. Например, для строки «h\n\e» в первой строке было выведено «h», а в следующей строке было «e». Это произошло потому, что мы включили переключатель -e в echo для печати новых строк после каждой строки. В предыдущей версии символы новой строки после каждой строки присваивались внутри самой строки при назначении ее в цикле, а для ее печати использовался ключ -e, что создавало проблему.

Как прочитать файл в обратном порядке с помощью python? Я хочу прочитать файл от последней строки до первой строки.

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

22 ответа 22

Правильный, эффективный ответ, записанный в виде генератора.

Это не будет работать для текстовых файлов в python>=3.2, так как по какой-то причине поиск относительно конца файла больше не поддерживается. Можно исправить, сохранив размер файла, возвращаемый функцией fh.seek(0, os.SEEK_END), и изменив fh.seek(-offset, os.SEEK_END) на fh.seek(file_size - offset) .

Обратите внимание, что это может не работать должным образом для текстовых файлов. Правильное получение блоков в обратном порядке работает только для двоичных файлов. Проблема в том, что для текстовых файлов с многобайтовой кодировкой (например, utf8) seek() и read() относятся к разным размерам. Вероятно, это также является причиной того, что ненулевой первый аргумент seek() относительно os.SEEK_END не поддерживается.

просто: 'aöaö'.encode() равно b'a\xc3\xb6a\xc3\xb6' . Если вы сохраните это на диск, а затем прочитаете в текстовом режиме, когда вы выполните seek(2), он переместится на два байта, так что seek(2); read(1) приведет к ошибке UnicodeDecodeError: кодек 'utf-8' не может декодировать байт 0xb6 в позиции 0: недопустимый начальный байт, но если вы выполните seek(0); читать (2); read(1) , вы получите ожидаемое значение «a», то есть: seek() никогда не поддерживает кодировку, read() — если вы открываете файл в текстовом режиме. Теперь, если у вас есть 'aöaö' * 1000000, ваши блоки не будут правильно выровнены.

А в Python 3:

Кроме того, хотя опубликованный код действительно отвечает на вопрос, мы должны быть осторожны, закрывая файлы, которые мы открываем. Оператор with обычно довольно безболезненный.

@MichaelDavidWatson: Не без того, чтобы сначала прочитать исходный итератор в память, а затем представить новый итератор поверх первого в обратном порядке.

@MichaelDavidWatson: Вы можете прочитать файл в обратном порядке, не считывая его в память, но это нетривиально и требует большого количества махинаций с буфером, чтобы избежать значительных потерь системных вызовов. Это также будет работать очень плохо (хотя и лучше, чем чтение всей памяти в память, если файл превышает доступную память).

@William Извините, как мне использовать приведенное выше решение, используя «с открытым» во время итерации по файлу, а затем закрыть его?

Вы также можете использовать модуль python file_read_backwards .

После его установки с помощью pip install file_read_backwards (v1.2.1) вы можете прочитать весь файл в обратном порядке (построчно) с эффективным использованием памяти с помощью:

Он поддерживает кодировки "utf-8", "latin-1" и "ascii".

Спасибо за это решение. Мне нравится (и я также проголосовал) решение @srohde выше, поскольку оно помогло мне понять, как это делается, но как разработчик я предпочитаю использовать существующий модуль, когда могу, поэтому я рад узнать об этом.

Это работает с многобайтовой кодировкой, такой как UTF-8. Решение seek/read этого не делает: seek() считает в байтах, read() в символах.

В текстовом файле размером 42 МБ, из которого я хочу прочитать только последние 500 КБ или около того, это было заметно медленнее, чем чтение/анализ всего файла (python 3.6.8 в CentOS 7). В основном я ищу способ, чтобы моя программа анализа работала быстро по мере роста файла, поскольку мне нужны только последние N совпадений.

Как насчет этого:

Поскольку файл читается посимвольно в обратном порядке, он будет работать даже с очень большими файлами, если отдельные строки помещаются в память.

Принятый ответ не будет работать для случаев с большими файлами, которые не помещаются в памяти (что не редкость).

Как было отмечено другими, ответ @srohde выглядит хорошо, но есть следующие проблемы:

  • открытие файла выглядит излишним, когда мы можем передать объект файла и оставить пользователю решать, в какой кодировке его следует читать,
  • даже если мы проведем рефакторинг для принятия файлового объекта, он не будет работать для всех кодировок: мы можем выбрать файл с кодировкой utf-8 и содержимым, отличным от ascii, например

передайте buf_size равным 1 и получите

Конечно, текст может быть больше, но buf_size может быть подобран, что приведет к запутанной ошибке, как указано выше,

  • мы не можем указать пользовательский разделитель строк,
  • мы не можем сохранить разделитель строк.

Поэтому, учитывая все эти проблемы, я написал отдельные функции:

  • тот, который работает с потоками байтов,
  • второй, который работает с текстовыми потоками и делегирует базовый поток байтов первому и декодирует результирующие строки.

Прежде всего давайте определим следующие вспомогательные функции:

ceil_division для создания разделения с потолком (в отличие от стандартного // разделения с полом, дополнительную информацию можно найти в этой теме)

split для разделения строки по заданному разделителю с правого конца с возможностью его сохранения:

read_batch_from_end для чтения пакета с правого конца двоичного потока

После этого мы можем определить функцию для чтения потока байтов в обратном порядке, например

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

Подготовка

Я создал 4 файла с помощью команды fsutil:

  1. пустой.txt без содержания, размер 0 МБ
  2. tiny.txt размером 1 МБ
  3. small.txt размером 10 МБ
  4. large.txt размером 50 МБ

также я переработал решение @srohde для работы с файловым объектом вместо пути к файлу.

Тестовый скрипт

Примечание. Я использовал класс collections.deque для запуска генератора.

Результаты

Для PyPy 3.5 в Windows 10:

Для CPython 3.5 в Windows 10:

Как мы видим, оно работает так же, как исходное решение, но является более общим и лишено недостатков, перечисленных выше.

Я добавил это в пакет lz версии 0.3.0 (требуется Python 3.5+), в котором есть много хорошо протестированных функциональных/итерирующих утилит.

Можно использовать как

Он поддерживает все стандартные кодировки (возможно, кроме utf-7, так как мне сложно определить стратегию генерации строк, которые можно закодировать с его помощью).

Как отобразить содержимое текстового файла в обратном порядке?

Используйте reversed() для чтения файла построчно в обратном направлении. Вызовите open(filename, mode) с параметром «r» в качестве режима, чтобы прочитать имя файла как поток. Файл вызова. readlines() с этим потоком в качестве файла, чтобы вернуть список, содержащий каждую строку файла. Вызовите reversed(list), чтобы перевернуть содержимое list .

Как перевернуть содержимое файла в Java?

  1. открытый класс ReverseArray
  2. public static void main(String[] args)
  3. //Инициализировать массив.
  4. int [] arr = новый int [] ;
  5. Система. вне. println("Исходный массив: ");
  6. for (int i = 0; i Как удалить текстовый файл в Python?

Удалить пробелы с помощью строковых методов.

  1. Используйте ул. strip для удаления начальных и конечных пробелов. ‘абв’. strip() — это «abc».
  2. Используйте ул. рстрип или ул. lstrip для удаления пробела только с правого или левого конца.
  3. Все эти методы возвращают новые строки. Поскольку строки нельзя изменить на месте.

Как избавиться от лишних пробелов в текстовом файле в Linux?

Простым решением является использование команды grep (GNU или BSD), как показано ниже.

  1. Удалить пустые строки (не включая строки с пробелами). грэп . файл.txt.
  2. Удалить полностью пустые строки (включая строки с пробелами). grep "\S" файл.txt.

Как удалить пробелы из URL?

Просто расшифруйте URL-адрес, используйте функцию замены, чтобы удалить пробелы, а затем снова закодируйте его.

Как исправить пробелы в URL-адресе?

Мы рекомендуем избегать использования пробелов в URL-адресах и вместо этого использовать дефисы для разделения слов. Если вы не можете этого сделать, убедитесь, что пробелы закодированы с помощью «+» или «%20» в строке запроса и с использованием «%20» в остальной части URL-адреса.

Как удалить все пробелы?

Удалить все пробелы между числами

  1. Нажмите Ctrl + Пробел, чтобы выделить все ячейки в столбце.
  2. Нажмите Ctrl + H, чтобы открыть диалоговое окно "Найти и заменить".
  3. Нажмите пробел в поле "Найти" и убедитесь, что поле "Заменить на" пусто.
  4. Нажмите кнопку "Заменить все", а затем нажмите "ОК". Вуаля!Все пробелы удалены.

Как удалить лишние пробелы в Интернете?

Вставьте текст, из которого нужно удалить ненужные пробелы. Замените несколько пробелов одним пробелом. Удалить все пробелы….Связанные текстовые инструменты

  1. Удалить разрывы строк.
  2. Удалить ведущие пробелы в конце.
  3. Удалить акцент.

Допускается ли место в URL?

URL-адреса можно отправлять через Интернет только с использованием набора символов ASCII. Кодировка URL заменяет небезопасные символы ASCII символом «%», за которым следуют две шестнадцатеричные цифры. URL-адреса не могут содержать пробелы. Кодировка URL обычно заменяет пробел знаком плюс (+) или %20.

Оглавление

Как отобразить содержимое текстового файла в обратном порядке?

Программа Python для чтения содержимого файла в обратном порядке

  1. Возьмите имя файла у пользователя.
  2. Прочитайте каждую строку из файла с помощью цикла for и сохраните ее в списке.
  3. Вывести элементы списка в обратном порядке.
  4. Выйти.

Как перевернуть содержимое файла в C?

Программа на C для обращения содержимого файла и его печати

Как вы показываете числа в обратном порядке?

Напишите программу на C для отображения числа в обратном порядке.

Как перевернуть текстовый файл в C++?

Простым способом реверсирования файла является использование итераторов потока, std::vector и std::reverse_copy()….

  1. помещаете в конец (последний байт) входного файла, читаете последний байт.
  2. записать байт в выходной файл.
  3. изменить положение на предыдущий байт, прочитать его, записать.

Как напечатать обратную строку в Python?

«Как напечатать что-то задом наперёд в python» Code Answer’s

Что является обратной стороной числа?

Поменяйте местами цифры, чтобы получить еще одно двузначное число. …

Что такое обратное число в C?

Программа на C, чтобы перевернуть число и вывести его на экран. Например, если на входе 123, на выходе будет 321. В программе мы используем оператор модуля (%) для получения цифр числа. Чтобы инвертировать число, напишите его цифры справа налево.

Как распечатать содержимое файла в обратном порядке?

Есть ли программа для обращения содержимого файла?

Ниже представлена ​​программа для переворачивания содержимого файла. Вот учебник по языку C, объясняющий Обработку файлов в C → Обработка файлов в C

Безопасно ли переворачивать строку в файле?

Теперь, когда у вас есть полная строка, вы можете заняться реверсированием ее отдельно от чтения файла. Это деструктивная версия, строка нарезается нулевыми байтами. Это можно сделать неразрушающим образом, и я могу отредактировать это позже. Поскольку ввод и обращение имеют одинаковую длину, безопасно использовать strcpy без ограничений.

Как перевернуть слово в C?

  1. Получить строку.
  2. Повторить каждый символ в строке.
  3. Всякий раз, когда мы находим пробел «_» между ними, передаем строку от начала до этого пробела обратной функции.
  4. В функции реверса мы просто меняем местами первую и последнюю буквы с обеих сторон, таким образом переворачивая слово.

Как перевернуть слово в строке в Python?

Перестановка слов строки в Python

  1. Взять строку, введенную пользователем.
  2. Разделите строку с помощью функции split().
  3. Используйте метод reverse(), чтобы перевернуть все слова, которые были отделены от строки.
  4. Наконец, соедините и распечатайте их с помощью функции join().

Как отменить программу?

Программа на C для переворачивания числа

  1. int main() < int n, r = 0;
  2. printf("Введите число для реверсирования\n"); сканф("%d", &n);
  3. в то время как (n != 0) < r = r * 10; г = г + п% 10; п = п/10; >
  4. printf("Обратное число = %d\n", r);

Как выполнить реверсивную печать в Unix?

Печать файла в обратном порядке с помощью команды Unix

  1. 1. Команду tac в Unix можно использовать для печати файла в обратном порядке. Команда tac есть. tac-файл.txt.
  2. Команда sed для перестановки строк в файле. сэд ‘1! G;h;$!d’ файл.txt.
  3. Другое использование команды sed. сэд-н ‘1! G;h;$p’ файл.txt.

Как перевернуть содержимое текстового файла?

Данный текстовый файл. Задача состоит в том, чтобы обратить, а также сохранить содержимое из входного файла в выходной файл. Это реверсирование может быть выполнено двумя типами. Полный реверс: при этом типе реверса все содержимое инвертируется. Инверсия слова к слову: в этом типе реверсирования последнее слово идет первым, а первое слово идет в последнюю позицию.

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

Алгоритм: 1. Сначала инвертируйте отдельные слова заданной строки одно за другим, для приведенного выше примера, после инвертирования… 2. Переверните всю строку от начала до конца, чтобы получить желаемый результат: «многое, очень похоже на i». в приведенном выше… Подробнее

Как перевернуть или отразить текст в Word?

Обратить или отразить текст в Word. Подробнее… Чтобы инвертировать (или зеркально отразить) текст в документе, необходимо сначала ввести текст в текстовое поле. После обращения текста можно убрать видимость использования текстового поля, удалив контур.

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

Чтобы изменить порядок строк в текстовом файле с помощью PowerShell, используйте следующий синтаксис командной строки из окна PowerShell: Создайте файл VBScript из следующего содержимого. Для этого откройте Блокнот, скопируйте в него следующие строки и сохраните файл с расширением .vbs — например, reverse_text_file.vbs ‘Скрипт для перестановки строк в текстовом файле.

Как прочитать файл в обратном порядке?

Это выглядит так:

  1. Перейти к одному байту до конца файла с помощью fseek .
  2. Чтение одного байта с помощью fgetc .
  3. Если этот байт является EOL, то последняя строка — это одна пустая строка, и она у вас есть.
  4. Снова используйте fseek, чтобы вернуться на два байта назад, и проверьте этот байт с помощью fgetc .
  5. Повторяйте вышеописанное, пока не найдете EOL.
  6. Прибыль.

Какая функция используется для перемещения указателя назад от конца файла для чтения в C++?

Правильный вариант: B. Функция-член seekg используется для позиционирования назад от конца файлового объекта.

Как вы читаете обратный файл в C++?

Основной алгоритм следующий:

  1. Перейти к концу файла с помощью is. seekg(0, т.е. конец)
  2. Определите размер файла с помощью is. рассказать()
  3. Неоднократно ищите назад и читайте фрагменты файла, пока не дойдете до начала.

Ниже приведены шаги, которые необходимо выполнить для решения этой проблемы.

  1. Разделите каждое слово в заданной строке, используя метод split() строкового типа данных в Python.
  2. Перевернуть список, разделенный словами.
  3. Напечатайте слова списка в виде строки после соединения каждого слова пробелом с помощью ” “. Метод join() в Python.

Что такое обратная функция в Python?

Python List reverse() — это встроенный в язык программирования Python метод, который меняет местами объекты списка. Параметры: параметров нет.

Как прочитать файл в обратном порядке в Linux?

Linux — отображение файла в обратном порядке

  1. Чтобы просмотреть файл в обратном порядке, достаточно выполнить команду tac. На самом деле это CAT, написанный наоборот: tac-файл.
  2. Как и с командой cat, вы можете объединить несколько файлов, которые будут объединены, но в обратном порядке: tac файл1 файл2 файл3.

Как уменьшить конец файла?

Использование: меньше . Как только вы находитесь внутри меньшего сеанса, вы можете выйти, нажав q . Вы можете перемещаться по содержимому файла с помощью клавиш «вверх» и «вниз» или с помощью пробела и «b» для перехода от страницы к странице. Вы также можете перейти к концу файла, нажав G, и вернуться к началу, нажав g .

Что такое функция seekg() Seekp() в C++?

seekg() и seekp() являются функциями обработки файлов в C++, и они являются очень важными и полезными функциями обработки файлов в C++. В обработке файлов C++ у нас есть два указателя: один — указатель получения, а второй — указатель помещения.

Что делает seekg() Mcq?

Объяснение: функция-член seekg используется для позиционирования назад от конца объекта файла. Объяснение: Объекты stringstream, ostringstream и istringstream используются для ввода и вывода в строку. 4.

Как создать новый файл в Python?

Python Создать текстовый файл

  1. ‘w’ — открыть файл для записи. Если файл не существует, функция open() создает новый файл. В противном случае содержимое существующего файла будет перезаписано.
  2. ‘x’ — открыть файл для эксклюзивного создания. Если файл существует, выдается ошибка ( FileExistsError ).

Как перевернуть слово в строке?

Мы можем перевернуть каждое слово строки с помощью методов reverse(), split() и substring(). Используя метод reverse() класса StringBuilder, мы можем перевернуть заданную строку. С помощью метода split("\\s") мы можем получить все слова в массиве. Чтобы получить первый символ, мы можем использовать метод substring() или charAt().

Можно ли в Python прочитать файл задом наперед?

Вы можете проверить, что строки были прочитаны в обратном порядке. Мы также можем читать слова в файле в обратном порядке. Для этого мы сначала читаем строки задом наперед, а затем токенизируем слова в них с применением функции reverse.

Как читать в обратном направлении с конца файла меньше?

Кроме того, с помощью +F, если файл записывается, когда вы используете меньше, это дополнительное содержимое будет выводиться. Это может быть полезно для журналов.Используйте клавишу со стрелкой вверх для перехода назад построчно или ctl+b для перехода по странице за страницей. Это не только доходит до конца файла, но и ожидает дополнительного вывода в конце, например, tail -f.

Как прочитать файл в обратном порядке?

Crunchify Вопросы для интервью Ответы на Java Как читать файл построчно в обратном порядке — Compl Вот простейшая программа на Java для чтения файла построчно в обратном порядке с использованием API-интерфейсов Java8. Попробуйте и дайте мне знать, если обнаружите какие-либо проблемы с этим.

Есть ли команда для отображения файла в обратном порядке?

Команда cat используется для отображения файла. Чтобы просмотреть файл в обратном порядке, достаточно выполнить команду tac. На самом деле это CAT, написанное наоборот: несколько слов благодарности были бы очень признательны. CCM – ведущий международный веб-сайт, посвященный технологиям.

В этой статье мы рассмотрим различные методы печати содержимого файла в обратном порядке.

Давайте рассмотрим файл со следующим содержимым:
1. Команда tac обратна команде cat. Он просто печатает файл в обратном порядке.
Примечание: tac доступен не во всех разновидностях Unix.

2. Этот параметр использует комбинацию команд для изменения порядка файлов. Команды
nl нумеруют содержимое файла. sort сортирует пронумерованный файл в обратном порядке, а команда cut удаляет номер и печатает содержимое файла.

<р>3. sed — самый сложный из всех.
Здесь используются многие команды sed. А пока мы кратко обсудим это. sed использует 2 вещи: пространство шаблонов и пространство для хранения. Пространство шаблона — это место, куда считывается строка из входного файла. Пространство хранения можно использовать для временного хранения данных. Логика проста: каждый раз, когда строка считывается в пространство шаблонов, объединяйте пространство хранения с пространством шаблонов и сохраняйте ее обратно в пространстве хранения. Как только последняя строка будет обработана, распечатайте содержимое области хранения.
h : Копировать содержимое пространства шаблона для хранения пространства.
G: добавить содержимое пространства хранения к пространству шаблона.
T: чтобы пропустить оставшуюся часть.

Когда читается первая строка (1), она просто копируется для хранения пробела (h). Со следующей строки содержимое пространства хранения добавляется (G) к текущему пространству шаблонов, а содержимое пространства шаблонов теперь перемещается в пространство хранения. Когда встречается последняя строка ($), содержимое пространства шаблонов просто печатается.

<р>4. awk решение довольно простое.
Одна за одной строка читается и сохраняется в массиве. В конце массив печатается в обратном порядке, начиная с последнего индекса.

<р>5. Perl решение довольно простое из-за обратной функции perl.
По мере чтения файла строки помещаются в массив. После обработки файла массив печатается в обратном порядке с помощью функции reverse.

Другой вариант с использованием Perl, без использования обратной функции:
В этом случае мы продолжаем извлекать элемент массива, пока в массиве не появится какой-либо элемент. Нажимая и выталкивая, он становится похожим на стек, LIFO, из-за которого файл автоматически печатается в обратном порядке.

Читайте также: