У меня есть список ячеек,Как подсчитать повторяющиеся слова из списка
- U1864
- u_dhm_lut/U4
- u_dhm_lut/lut_out_reg_2_
- u_dhm_lut/lut_in_reg_2_
И Я хочу рассчитать, сколько раз приходит каждое имя Результат будет:
- U1864 1
- u_dhm_lut/lut_out_reg_2_ 18
- u_dhm_lut/lut_in_reg_2_ 14
- u_dhm_lut/U4 10
код, как:
set cell_cnt [open "demo.txt" r]
set cell [read $cell_cnt]
set b [open "number_of_cell.txt" w+]
proc countwords {cell_count} {
set unique_name [lsort -unique $cell_count]
foreach count $unique_name {
set cnt 0
foreach item $cell_count {
if {$item == $count} {
incr cnt
}
}
puts $b "$count :: $cnt"
}
}
countwords $cell
Он говорит, что не может read "b": нет такой переменной при выполнении "ставит $ b" $ count :: $ cnt "" Почему я не могу написать файл внутри proc?
Это * другой * FAQ. Причина, по которой ваш код в процедуре не может использовать переменную «b», заключается в том, что она является глобальной. Используйте :: b или вызовите команду «global b» (без кавычек) перед использованием переменной. Кроме того, рассмотрите возможность использования немного более простого кода для подсчета частоты (например, в моем ответе). В будущем вы будете благодарны вам, если вы когда-нибудь снова будете работать с тем же кодом. –