Чтобы перенаправить поток с выхода на вход нужно использовать временный файл или нужен другой способ?
Lapp
23.10.2008 0:03
Цитата(Анна @ 22.10.2008 19:30)
перенаправить поток с выхода на вход
Это типа замкнуть процесс сам на себя? Хм.. Никогда не задумывался над этим.. Так на вскидку придумать как обойтись без промежуточного файла не могу. Мне кажется. не обойтись без него.
К примеру, tr -d "[0-9]" < a.txt | sort | uniq > b.txt Поток с удаленными [0-9] с выхода подать на вход для сортировки и т.д.
volvo
23.10.2008 1:05
Цитата
К примеру, tr -d "[0-9]" < a.txt | sort | uniq > b.txt Поток с удаленными [0-9] с выхода подать на вход для сортировки и т.д.
Ну, и что? Я так тоже умею: tasklist | sort (поток с выхода tasklist подать на вход sort)... Конкретнее, в чем проблема? Тебе это что, на Паскале реализовать надо?
Анна
23.10.2008 1:24
Не знаю как реализовать на Паскале..
volvo
23.10.2008 23:59
Ну, поскольку ты молчишь, на каком Паскале тебе это надо реализовать, и что представляет из себя тот самый поток, то предложу тебе вот такой вариант (псевдокод, но реализация существует... Раздел не тот, чтоб приводить программу полностью) :
type stream = list; { <--- обычный односвязный список }
procedure read_stream(var f: text): stream; { <--- вернет указатель на голову списка } begin {...} end; procedure write_stream(in_stream: stream; var f: text); begin {...} end; procedure tr(in_stream: stream; params: set of char): stream; begin {...} end; procedure sort(in_stream: stream): stream; begin {...} end;
{ Вызывается все это вот так: } write_stream(sort(tr(read_stream(f_in), ['0' .. '9'])), f_out);
И никаких временных файлов... В принципе, вместо f_out можно даже подставить тот же f_in...
Теперь насчет списка... Чем не поток? Тоже обрабатывается последовательно, как и текстовый файл...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.