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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3253|回复: 4

[求助] 求助: 关于TCL脚本的!

[复制链接]
发表于 2011-12-12 15:00:28 | 显示全部楼层 |阅读模式

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

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

x
求助:  下面粗+斜体是“test.tdf”文件的内容。 粗体的是我的一个tcl的脚本。 斜体的是运行结果的一部分。
           我本来是想通过foreach i [split $pin_line] 滤掉$pin_line中的空格后形成一个list。
           可是现在$pins却一直没有值。lappend $pins $i  这个命令好像不起作用?这是怎么回事呢?
           还有其他简单的方法得到一个一行内容形成一个列表,空格不算的?

tdfPurgePadConstr
pin "BP0"    32 0.5 0.5  "top" 1 20
pin "BP1"    32 0.5 0.5  "top" 2 30
pin "BP2"    32 0.5 0.5  "top" 3 40
pin "BP3"    32 0.5 0.5  "top" 4 50
pin "BP4"    32 0.5 0.5  "top" 4 60

pin "BP0"    32 0.5 0.5  "bottom" 1 20
pin "BP1"    32 0.5 0.5  "bottom" 2 30
pin "BP2"    32 0.5 0.5  "bottom" 3 40
pin "BP3"    32 0.5 0.5  "bottom" 4 50
pin "BP4"    32 0.5 0.5  "bottom" 4 60

pin "BP0"    33 0.5 0.5  "left" 1 20
pin "BP1"    33 0.5 0.5  "left" 2 30
pin "BP2"    33 0.5 0.5  "left" 3 40
pin "BP3"    33 0.5 0.5  "left" 4 50
pin "BP4"    33 0.5 0.5  "left" 4 60

pin "BP0"    33 0.5 0.5  "right" 1 20
pin "BP1"    33 0.5 0.5  "right" 2 30
pin "BP2"    33 0.5 0.5  "right" 3 40
pin "BP3"    33 0.5 0.5  "right" 4 50
pin "BP4"    33 0.5 0.5  "right" 4 60


#!/usr/bin/tcl
set PIN_INFO [open "./test.tdf" r]
foreach pin_line [split [read $PIN_INFO] \n] {  
      puts "pin_line =$pin_line \n"
      set pins

          foreach i [split $pin_line] {
            if {$i != ""} {
                puts "i=$i \n"
                lappend $pins $i
                puts "pins=$pins\n"
             }
          }
          puts "pins = $pins  \n"
    }



    pin_line =pin "BP0"    33 0.5 0.5  "right" 1 20
    i=pin
    pins=
    i="BP0"
    pins=
    i=33
    pins=
    i=0.5
    pins=
    i=0.5
    pins=
    i="right"
    pins=
    i=1
    pins=
    i=20
    pins=
    pins =
    pin_line =pin "BP1"    33 0.5 0.5  "right" 2 30
发表于 2011-12-12 15:16:53 | 显示全部楼层
能否把你想要的输出格式贴一部分出来
 楼主| 发表于 2011-12-13 09:24:25 | 显示全部楼层
回复 2# 射门靴

我想要的结果如下方粗体的结果。

pin_line =pin "BP4"    33 0.5 0.5  "right" 4 60
pins =pin {"BP4"} 33 0.5 0.5 {"right"} 4 60


我本来想用split的命令,set pins [split $pin_line],结果输出如下:
pin_line =pin "BP4"    33 0.5 0.5  "right" 4 60
pins =pin {"BP4"} {} {} {} 33 0.5 0.5 {} {"right"} 4 60
为了滤去列表中的空的元素,才用了之前贴出来的程序中foreach循环。
发表于 2011-12-13 13:47:23 | 显示全部楼层
regsub -all {\s+} $pin_line " " $pins
用正则表达式把多个空格替换成一个空格或者没有空格的空字符是不是就可以达到你的要求了
用foreach 太麻烦了
 楼主| 发表于 2011-12-13 14:35:29 | 显示全部楼层
回复 4# 射门靴


    非常感谢,问题解决了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-3-28 22:41 , Processed in 0.023828 second(s), 8 queries , Gzip On, Redis On.

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