2015-12-22 4 views
0

Удалить дублированные строки с tcl очень долго.удалить дублированные строки с tcl

поэтому я хочу использовать короткий путь с оболочкой, а затем выполнить его с Tcl:

под tclsh

% exec sort -u file 

, но файл не изменяется

является сортировка требует перенаправления? как я могу это сделать!

ответ

2

sort команда фактически не изменяет входной файл. Для этого используйте простой Перенаправление файла в качестве

[[email protected] ~]$ tclsh 
% cat input 
o 
a 
u 
e 
i 
% exec sort -u input > output 
% cat output 
a 
e 
i 
o 
u 
% 
0

Чтобы осуществить это в Tcl, я хотел бы использовать tcllib's fileutil module

package require fileutil 
::fileutil::foreachLine line "file" {dict set lines $line 1} 
set sorted_unique_lines [lsort [dict keys $lines]] 

Скорее всего, это будет происходить медленнее, чем взывая к sort


Чтобы написать в тот же файл и в зависимости от вашей ОС, есть sponge command из пакета moreutils (sudo apt-get install moreutils)

exec sort -u file | sponge file