Помощь - Поиск - Пользователи - Календарь
Полная версия: редактор SED
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Тёмный Эльф
Есть такая функция в Shell - ls которая выводит содержимое текущего каталога (и можно добавить различные опции сортировки). Вроде можно и без SED прекрасно обойтись, но по заданию надо чтобы "программа выводила на экран содержимое текущего каталога в алфавитном порядке и упорядоченное по времени создания/файлов с использованием редактора SED". blink.gif Поэтому думаю надо сделать, чтобы в файл выводились результаты работы ls (упорядоченное по времени создания файлов), а потом этот файл будет отсортирован с помощью SED (в алфавитном порядке). Вот не знаю только есть ли функция сортировки в SED или ее самой нужно написать будет? wink.gif
xds
Наверное, наоборот. ls по умолчанию сортирует по алфавиту. Её вывод надо пересортировать SEDом.

Вообще, даты сортировать сложнее, поэтому я за твой вариант smile.gif

ls -lt | sed -E "s/^(total [0-9]+)$//;s/^(([^ ]+ +){8})(.*)/\3 \1/" | sort | sed -E "s/(.*)((( +[^ ]+){8} +))$/\3\1/"

Сортирует тут sort, а sed используется для того, чтобы перенести имена файлов в начало строки и вернуть их после сортировки в начальное положение.
Тёмный Эльф
Код
ls -lt | sed -E "s/^(total [0-9]+)$//;s/^(([^ ]+ +){8})(.*)/\3 \1/" | sort | sed -E "s/(.*)((( +[^ ]+){8} +))$/\3\1/"

Если загнать этот код в исполняемый файл и запустить его, то выдает ошибку "Invalid reference \3 on `s`" . Почему так?
xds
У меня все работает. Может отличается формат вывода ls? Можешь показать, что выводится по ls -lt?
Тёмный Эльф
Цитата(xds @ 23.10.2007 17:42) *

Можешь показать, что выводится по ls -lt?


Ввожу в командной строке от имени пользователя root команду ls -lt
Выводит
-rw-r--r-- 1 root root 111 Окт 23 00:45 prog3.sh
-rw-r--r-- 1 root root 117 Окт 21 21:24 prog3.sh~
и т.д.
Т.е. упорядоченное по времени создания файлов
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.