[讨论]脚本编程:txt文本账号导入ROS的思路及具体代码
本帖最后由 ww111222 于 2011-10-4 13:45 编辑学习ROS也有一段时间了,为了锻炼自己的脚本水平, 在学习了 **家 的视频教程后,给自己布置了一顶作业:
用脚本导入 文本账号。
文本账号 信息如下:
EndDate Name Address Tel Bandwidth User Pass
====== ====== ====== ========= ======= ========= ===========
201110 王大夫 1单元402 13999393998 4M 158099184001234567890
201206 刘伟 2单元401 6922171 4M 1580991881609876655
其中:第1行 和 第2行 是提示信息
从第3行开始才是 具体的账号信息。
我想在导入后得到如下账号:
账号的comment信息:(王大夫)(1单元402)(13999393998)
账号为:15809918400 密码为:1234567890,Profile为 自定义的 4M 的配置。
本帖最后由 ww111222 于 2011-10-4 13:52 编辑
#pick用法 截取abcde里从1到3的内容得到 bc
# :put [:pick "abcde" 1 3 ] 得到 bc
#find用法 从$lastEnd开始 查找字符串或数组中第一个出现查找内容的位置
# :put [:find "abcdefghigk" g 3]得到6
# :put [:find "abcdefghigk" g ]得到6
# :put [:find "abcdefghigk" g 6] 得到9
#获得文本内容
:global content contents]
#获得文本长度
:globalcontentLen [ :len $content ]
#每行结尾标志
:global lineEnd 0
#每行的内容
:global line ""
#每一行的开始位置
:global lastEnd 0
#查找 第2行末[=\r\n(回车换行符)]的位置,从第0位开始
:set lineEnd [ :find $content "=\r\n" $lastEnd ]
:put $lineEnd
#去掉 前两行 的提示内容,获得真正账号信息
#第3行开始的位置:$lineEnd + 3
:global TempContent 0
:set TempContent [ :pick $content ($lineEnd + 3) $contentLen ]
:put $TempContent
#得到实际账号信息的长度
:set contentLen [ :len $TempContent ]
:set lineEnd 0
:set lastEnd 0
#打印所有变量的值
:environment print
====================================================
下面的问题是如何 得到 以空格 分隔 的信息。 本帖最后由 ww111222 于 2011-10-4 22:56 编辑
奇怪了,在ROS里 不认 文本文件里用TAB生成的空格间隔。
用:
:find $line " " $lineTop
无法找到 空格
#循环执行
:while ($lineEnd != $TXTcontentLen) do={
#查找 第一个 \r\n(回车换行符)的位置,从0开始 得到每一行的长度
:set lineEnd [ :find $TXTcontent "\r\n" $lineTop ]
:put $lineEnd
#取得 账号信息 一行 的内容
:set line [ :pick $TXTcontent $lineTop $lineEnd ]
:put $line
#得到当前行的长度
:global lineLength [ :len $line ]
:put $lineLength
:set lineEnd $TXTcontentLen
:put $TXTcontentLen
#得到当前行EndDate的位置
:global EndDateEnd 0
:set EndDateEnd [ :find $line " " $lineTop ]
:put $EndDateEnd
#得到EndDate的文本内容
:local EndDateTXT ""
:set EndDateTXT [ :pick $line $lineTop $EndDateEnd ]
:put $EndDateTXT
}
========================
哈哈,解决了。原来 TAB 产生的空格是 \t 来表示 虽然用不上,但还是要顶一下。 不错,谢谢了! 本帖最后由 ww111222 于 2011-10-5 15:14 编辑
今天测试了一下, 基本上 达到 要求了。
还有一个难题:
取得4M这个值后,:set TempTXT5
用 profile=$TempTXT5 居然提示错误。
要顶一下:handshake 路过学习学习!!! 会命令,,的就是学的快呀
:$:$很好,很不错,学习了 希望楼主继续分享学习笔记 :victory:感谢分享 好贴,顶,,,,,正要向你请教呢,呵呵 不错,支持一下。 楼主可以留个QQ联系方式吗 有问题请教你
页:
[1]
2