IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

 
 Ответить  Открыть новую тему 
> редактор SED, вывод содержимого каталога
Тёмный Эльф
сообщение 21.10.2007 17:12
Сообщение #1


Влюблённый псих
***

Группа: Пользователи
Сообщений: 185
Пол: Женский
Реальное имя: Лейла

Репутация: -  1  +


Есть такая функция в Shell - ls которая выводит содержимое текущего каталога (и можно добавить различные опции сортировки). Вроде можно и без SED прекрасно обойтись, но по заданию надо чтобы "программа выводила на экран содержимое текущего каталога в алфавитном порядке и упорядоченное по времени создания/файлов с использованием редактора SED". blink.gif Поэтому думаю надо сделать, чтобы в файл выводились результаты работы ls (упорядоченное по времени создания файлов), а потом этот файл будет отсортирован с помощью SED (в алфавитном порядке). Вот не знаю только есть ли функция сортировки в SED или ее самой нужно написать будет? wink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 21.10.2007 17:42
Сообщение #2


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Наверное, наоборот. 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 используется для того, чтобы перенести имена файлов в начало строки и вернуть их после сортировки в начальное положение.

Сообщение отредактировано: xds - 21.10.2007 19:15


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Тёмный Эльф
сообщение 22.10.2007 23:49
Сообщение #3


Влюблённый псих
***

Группа: Пользователи
Сообщений: 185
Пол: Женский
Реальное имя: Лейла

Репутация: -  1  +


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

Если загнать этот код в исполняемый файл и запустить его, то выдает ошибку "Invalid reference \3 on `s`" . Почему так?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 23.10.2007 16:42
Сообщение #4


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


У меня все работает. Может отличается формат вывода ls? Можешь показать, что выводится по ls -lt?


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Тёмный Эльф
сообщение 23.10.2007 18:57
Сообщение #5


Влюблённый псих
***

Группа: Пользователи
Сообщений: 185
Пол: Женский
Реальное имя: Лейла

Репутация: -  1  +


Цитата(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~
и т.д.
Т.е. упорядоченное по времени создания файлов
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.04.2024 17:04
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"