1

助けてください: 私の txt ファイルには、この種のデータが含まれています。繰り返し文字列を見つける必要があり、文字列が繰り返される場合は、post_suffix を次のように変更します。

a
b
st1
ver1
st2
ver2
st3
st4
st_list1
ver3
ver4
ver_list1
st1
ver5
st2
ver5
st1
ver6

Oitput ファイルは次のようになります。

a
b
st1
ver1
st2
ver2
st3
st4
st_list1
ver3
ver4
ver_list1
st1_repeted1
ver5
st2_repeted1
ver5_repeted1
st1_repeted2
ver6

私のコード:

if {$rec == "st1"} {
#st1 
incr count_set1 
if {$count_set1 == 1} {
    #puts $fd "$new"
    } else {
        set pr_st1 $rec$U$count_set1
        regsub $rec $content $pr_st1 new_set 
        puts $fd "$new_set"
    } 
} 
4

2 に答える 2

1

あなたのコードが正確にどのように機能するかはわかりません。st1

私は次のようなものを使用します:

set file [open "File.txt" r]
set output [open "output.txt" w]

set wordlist ""

while {[gets $file line] != -1} {
    set id [lsearch -regexp $wordlist "^$line \[0-9]+$"]
    if {$id == -1} {
        lappend wordlist "$line 0"
        puts $output $line
        puts "new"
    } else {
        set count [lindex [lindex $wordlist $id] 1]
        incr count
        puts $output "${line}_repeated$count"
        set wordlist [lreplace $wordlist $id $id "$line $count"]
        puts repeated
    }
}

close $file
close $output

これにより、任意の行を確認できます。ただし、大きなファイルがある場合は、処理時間が急増します。

于 2013-09-26T08:31:51.253 に答える