用tcl删除重复的行

时间:2015-12-22 11:06:38

标签: shell tcl

删除重复的行与tcl很长。

所以我想用shell的短路然后用tcl:

执行它
  

在tclsh下

% exec sort -u file

但文件没有改变

是排序需要重定向吗? 我怎么能这样做!

2 个答案:

答案 0 :(得分:2)

sort命令实际上不会更改输入文件。为此,请使用简单文件重定向

[dinesh@lab ~]$ tclsh
% cat input
o
a
u
e
i
% exec sort -u input > output
% cat output
a
e
i
o
u
%

答案 1 :(得分: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

要慢

要写入同一个文件,并且根据您的操作系统,moreutils包中有sponge command(sudo apt-get install moreutils)

exec sort -u file | sponge file