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

> Внимание!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> редактор SED, вывод содержимого каталога
сообщение
Сообщение #1


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

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

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


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


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


N337
****

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

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


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


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 29.09.2020 8:24
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name