在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6836|回复: 10

[求助] 如何用Tcl实现统计文件中某字符串的个数

[复制链接]
发表于 2018-5-4 11:10:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
如何用TCL实现统计文件中某字符串的个数,求助大神指点
发表于 2018-5-4 15:53:05 | 显示全部楼层
example:
regexp -all  "abc"  "abcdefgabcefeabc"
=》 3
 楼主| 发表于 2018-5-4 16:00:23 | 显示全部楼层
感谢万分
发表于 2018-5-16 09:11:06 | 显示全部楼层
回复 2# darrenxu


   可以字串A跟某個文件檔案比對的嗎???
我的想法是:
set filein   [open report.txt r]
regexp -all "A" $filein


其中report.txt內容是
test
test
A
B


但比對出來是0,要如何才能真正比對正確次數
发表于 2018-5-16 11:18:34 | 显示全部楼层



open只是打开文件, 没有把内容读进来;写个循环gets每一行, 然后把每行匹配到的单词个数+起来就行了




  1. set b 0
  2. set cc "test02"
  3. set f [open /xxxxxxxxxxxxx/abc r]
  4. while { [ gets $f line ] > -1 } {
  5.     echo $line
  6.     set a [regexp -all $cc $line]
  7.     set b [expr $b +$a]
  8. }
  9. puts "b= $b"
  10. close $f


复制代码
发表于 2018-5-16 13:12:29 | 显示全部楼层
good point
发表于 2018-5-16 17:03:42 | 显示全部楼层
回复 5# rioshiina
非常感謝您的指導,讓我發現我的錯誤,也測試OK了,謝謝~~~
以下是我的程式(讓大家學習,若有不足的地方,請多包含)
set fileout2     [open total_report.txt w]
#開啟檔案,寫入用

set b 0
#設定變數b
set text "RUN ALL PATTERN FINISH ERROR"
#設定變數text
SET filein2      [open error_report.txt r]
#開啟檔案,讀取用
while {[gets $filein2 line] > -1} {
#循环gets每一行

echo $line

set aaa  [regexp -all $text $line]
#比對字串

set b     [expr $b + $aaa]
#比對到的單詞個數+1

puts $fileout2 $line
#將每一行寫入到total_report.txt
}
puts $fileout2 "total error Nob"
#比對到的總數寫入到total_report.txt最後一行(觀察有沒有跑完全部條件及錯誤)

close $filein2
close $fileout2
发表于 2018-5-16 22:34:26 | 显示全部楼层
回复 4# tezhi

set filein   [open report.txt r]
regexp -all "A" [ read $filein ]

没这么麻烦, 改一点就可以
发表于 2018-5-17 09:37:23 | 显示全部楼层
回复 8# darrenxu

感謝您的指導,讓我學習到了新的指令用法,以下是我寫的測試程序(供大家研究,若有不週全的地方,請包含)。
set fileout2 [open total_report.txt w]            #建立新檔案,寫入用
set text "RUN ALL PATTERN FINISH ERROR"  #建立變數text,寫入一字串
set filein2   [open report.txt r]                     #讀取檔案
fcopy $filein2 $fileout2                                #讀取的檔案複製寫入到新檔案
close $filein2                                              #關閉讀取

set filein2   [open report.txt r]                     #讀取檔案
set b [regexp -all $text [ read $filein2 ]]       #比對檔案中的字串,將比對次數寫入到變數
puts $fileout2 "total error Nob"                 #寫入一字串到新檔案
close $filein2                                              #關閉檔案
close $fileout2                                            #關閉檔案
发表于 2018-6-13 16:59:16 | 显示全部楼层
拜读,学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-18 10:38 , Processed in 0.024414 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表