我有有多條線路像一個文件: -TCL排序文件數學
A B A 10 20
A B A 10 20
C D A 10 15
A B Q 15 20
A B A 35 45
A B A 15 20
C D A 10 15
A B A 20 25
.
.
.
A A A x1 y1
前三的Fileds一些文本模式。
現在我想要寫在TCL一個程序做以下兩項: -
- 做了獨特的排序「排序-u」爲文件& reoves重複線&轉儲O/P在新文件中。
- 對於前三個字段相同的情況,只轉儲那些數字大於10的行。
對於例如O/P上述文件的同時滿足條件將是: -
A B A 10 20
A B A 35 45
C D A 10 15
A B Q 15 20
行的順序不是重要的文件。
##Changed the program
set input [open "data.txt" "r"]
set content [read $input]
set lines [lsort -unique [split $content "\n"]]
set keylist ""
set valuelist ""
foreach line $lines {
if {$line == ""} { continue }
set data [split $line " "]
set key [join [lrange $data 0 2] "_"]
set index [lsearch $keylist $key]
if {$index != -1} {
set value [lindex $valuelist $index]
set diff_a [expr [lindex $data 3] - [lindex $value 0]]
set diff_b [expr [lindex $data 4] - [lindex $value 1]]
if {$diff_a > 10 && $diff_b > 10 } {
puts $line
}
set a [ lreplace valuelist $index $index [lrange $data 3 4]]
set valuelist $a
} else {
lappend keylist $key
lappend valuelist [lrange $data 3 4]
puts $line
}
}
看看這個[需要排序-u做。需要使用TCL](http://stackoverflow.com/questions/15215600/tcl-sort-a-file),它可以幫助你與部分(1) – static 2013-03-11 02:45:47