[求助]tcl中文件读写的问题 - Shell - ChinaUnix_net
[求助]tcl中文件读写的问题 - Shell - ChinaUnix私人消息 (0)公共消息 (382)系统消息 (0)好友消息 (0)帖子消息
(0)
bbs.ChinaUnix首页 | 微博 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客
| 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 
·中国网民每周上网逾22小.. ·青海地震局解释4.7级地.. ·工信部:我国网民达4.0.. ·美卫星捕捉冰岛艾雅法拉火..
·孙士鋐:地震“预警”概念.. ·Rambus一季度盈利1.. ·微软告赢大众保险获赔20.. ·杨乐院士寄语青年学子:成..
·严格的发布计划将会葬送U.. ·陈平原写在北大中文系建系.. ·白宫向开源项目捐赠代码 ·监听短信满天飞 运营..  更多快讯
[求助]tcl中文件读写的问题
首页 » 论坛 » Shell »  版块跳转 Linux论坛BSD      BSD文档中心Solaris     
Solaris文档中心互操作专区AIX      X无处不在      AIX文档中心AS400HP-UX      HP文档中心SCO
UNIX      SCO文档中心Tru64 UNIXIRIXMac OS XC/C++ShellJava      Java文档中心Php
php文档中心PerlPython     
Python文档中心Web开发软件工程中间件技术GUI编程软件配置管理VOIP开发技术CPU与编译器RubyOpenAPIFunctional编程数据仓库与数据挖掘安全技术网络技术
网络技术文档中心存储备份之家      存储文档中心      存储业界     
存储资源下载服务器及硬件技术门户网站运维龙芯技术MySQL     
MySQL文档中心SybaseOraclePostgreSQLDB2InformixWeb服务器Mail服务器FTP服务器DNS服务器Proxy服务器LDAPVPNLotusSamba金融行业电信行业互联网行业制造行业医卫行业教育行业电子政务信息安全交通行业IT业界新闻与评论
关注流感      IT业界快报IT职业生涯IT培训与认证IT采购数据中心IT图书与评论清茶斋      各地快讯投资理财   
财经快报运动地带      体坛快报快乐数码摄影      摄影比赛专区      摄影器材影音娱乐     
文娱播报外语沙龙游戏玩家旅游天下IT爱车族      汽车快报文学小说美食美      美食菜谱CU技术图书大系CU活动专区     
拍卖交流区      CU伴我行站务交流博客站务交流区下载频道交流区  最近访问的版块      服务器及硬件技术      C/C++   
Python      Linux论坛
Novell Linux迁移有奖大调查! | 《开源时代》2010.3月刊(有奖下载) | 09/10中国IT应用蓝皮书下载 |
域名主机建站首选时代互联
返回列表 发帖
[打印] [收藏] [本帖文本页] [推荐此主题给朋友]
le
o314034 发短消息
加为好友
leo314034 当前离线
UID11553800 帖子54 精华0 积分13 可用积分13  信誉积分100  专家积分0  空间积分0  阅读权限10 在线时间1 小时
注册时间2006-06-09 最后登录2009-11-17 
骑士
帖子54 主题35 精华0 可用积分13  专家积分0  在线时间1 小时 注册时间2006-06-09 最后登录2009-11-17
状态:...当前离线...
[微博] [博客] [短信]  [倒序看帖]
1楼 发表于 2007-10-11 12:39 | 只看该作者
我想打开一个文件,然后比如读到第2行,在后面加used,可发现used总是加到文件的最后,这是为
什么呢?我打印了文件的偏移量,是第二行的结尾阿
#!/opt/tools/bin/tclsh
set fname {/home/leozhu/AlphaNumber}
set f [open $fname r+]
puts "hello"
while { [gets $f line]>=0 } {
if {[regexp {used} $line]} {
continue
} else {
scan $line "%s" PhoneNumber
雷霆嘎巴是什么意思
puts stdout $PhoneNumber韩愈在送桂州严大夫同用南字描绘
set pos  [tell $f]
puts $pos
set $f $pos
puts $f used
break
}
}
puts "end"
close $f
exit 0
Nehalem-EX架构将挑战RISC?| Oracle顶级认证,OCM:高薪的象征 | 《开源时代》2010年第三期 | Novell
Linux迁移有奖大调查!
waker (孩儿他爹㊞) 发短消息
加为好友
waker (孩儿他爹㊞)当前离线
UID467748 帖子23444 精华2 积分70514 可用积分70514  信誉积分400  专家积分595  空间积分0 
阅读权限100 性别男 来自中国南京 在线时间4288 小时 注册时间2002-08-26 最后登录2010-04-23 
歌词WAP是什么意思广告杀手
帖子23444 主题2037 精华2 可用积分70514  专家积分595  来自中国南京 在线时间4288 小时 注册时间2002-08-26
最后登录2010-04-23 状态:...当前离线...
[微博] [博客] [短信] 
2楼 发表于 2007-10-11 13:47 | 只看该作者
set $f $pos 这是啥意思?
__________________________________
=GNU/linux=
GNU {bash 2.05b, grep 2.5, Awk 3.1.3, sed 4.0.8}
导师说:站起来吧
众人说:那么辛苦那么艰苦到底值不值?
设计师说:富起来吧
众人说:拼啦
Nehalem-EX架构将挑战RISC?| Oracle顶级认证,OCM:高薪的象征 | 《开源时代》2010年第三期 | Novell
Linux迁移有奖大调查!
leo314034 发短消息
加为好友
leo314034 当前离线
UID11553800 帖子54 精华0 积分13 可用积分13  信誉积分100  专家积分0  空间积分0  阅读权
限10 在线时间1 小时
注册时间2006-06-09 最后登录2009-11-17 
骑士
帖子54 主题35 精华0 可用积分13  专家积分0  在线时间1 小时 注册时间2006-06-09 最后登录2009-11-17
状态:...当前离线...
[微博] [博客] [短信] 
3楼 发表于 2007-10-11 15:39 | 只看该作者
不好意思,写错了,应该是
seek $f $pos
Nehalem-EX架构将挑战RISC?| Oracle顶级认证,OCM:高薪的象征 | 《开源时代》2010年第三期 | Novell
Linux迁移有奖大调查!
waker (孩儿他爹㊞) 发短消息
加为好友
waker (孩儿他爹㊞)当前离线
UID467748 帖子23444 精华2 积分70514 可用积分70514  信誉积分400  专家积分595  空间积分0 
阅读权限100 性别男 来自中国南京 在线时间4288 小时 注册时间2002-08-26 最后登录2010-04-23 
广告杀手
帖子23444 主题2037 精华2 可用积分70514  专家积分595  来自中国南京 在线时间4288 小时 注册时间2002-08-26
最后登录2010-04-23 状态:...当前离线...
[微博] [博客] [短信] 
4楼 发表于 2007-10-11 15:56 | 只看该作者
如果你想puts在gets之后,直接 seek $f 0 current 试试
另外这是不是个bug是没必要讨论的,tcl的open/puts/gets是建立在系统调用的基础上的,在俺的机器上man fopen
中有这样的一段
Reads and writes may be intermixed on read/write streams in
any order.
Note  that  ANSI C requires that a file positioning function
intervene
between output and input, unless an input operation
encounters end-of-
file.  (If this condition is not met, then a read is allowed
to return
the result of writes other than the most  recent.) 
Therefore  it  is
good  practice  (and indeed sometimes necessary under Linux)
to put an
fseek or fgetpos operation between write and read operations
on such a回家的心情
stream.  This operation may be an apparent no-op (as in
fseek(..., 0L,
SEEK_CUR) called for its synchronizing side effect.
__________________________________
=GNU/linux=
GNU {bash 2.05b, grep 2.5, Awk 3.1.3, sed 4.0.8}
导师说:站起来吧
众人说:那么辛苦那么艰苦到底值不值?
设计师说:富起来吧
众人说:拼啦
Nehalem-EX架构将挑战RISC?| Oracle顶级认证,OCM:高薪的象征 | 《开源时代》2010年第三期 | Novell
Linux迁移有奖大调查!
dearvoid 发短消息
加为好友
dearvoid 当前离线
UID15182501 帖子313 精华0 积分361 可用积分361  信誉积分100  专家积分0  空间积分0  阅读权限20
在线时间10 小时 注册时间2003-04-21 最后登录2010-01-31 
精灵王
帖子313 主题22 精华0 可用积分361  专家积分0  在线时间10 小时 注册时间2003-04-21 最后登录2010-01-31
状态:...保密...
[微博] [博客] [短信] 
5楼 发表于 2007-10-11 17:35 | 只看该作者 二手车之家
这样直接在原文件上添加数据是不可行的
__________________________________
◆ 欢迎访问 Linux 伊甸园 论坛 ◆
Nehalem-EX架构将挑战RISC?| Oracle顶级认证,OCM:高薪的象征 | 《开源时代》2010年第三期 | Novell
Linux迁移有奖大调查!
leo314034 发短消息
加为好友
leo314034 当前离线
UID11553800 帖子54 精华0 积分13 可用积分13  信誉积分100  专家积分0  空间积分0  阅读权限10 在线时间1 小时
注册时间2006-06-09 最后登录2009-11-17 
骑士
帖子54 主题35 精华0 可用积分13  专家积分0  在线时间1 小时 注册时间2006-06-09 最后登录2009-11-17
状态:...当前离线...
[微博] [博客] [短信] 
6楼 发表于 2007-10-11 21:20 | 只看该作者
多谢楼主!现在改用另外一种方法了,直接跳过原来读的内容,这样就不用在读过的内容上加标记了。
proc readfile {} {
global pos
global fname
global numberphone
set f [open $fname r+]
if {$numberphone > 0} {
set pos  [expr [expr $numberphone*6] +$numberphone]
}
seek $f $pos
while { [gets $f line]>=0 } {
scan $line "%s" PhoneNumber
puts stdout $PhoneNumber户口所在地详细地址写什么
break
}
close $f
incr numberphone 1
}
Nehalem-EX架构将挑战RISC?| Oracle顶级认证,OCM:高薪的象征 | 《开源时代》2010年第三期 | Novell
Linux迁移有奖大调查!
dearvoid 发短消息
加为好友
dearvoid 当前离线
UID15182501 帖子313 精华0 积分361 可用积分361  信誉积分100  专家积分0  空间积分0  阅读权限20
在线时间10 小时 注册时间2003-04-21 最后登录2010-01-31 
精灵王
帖子313 主题22 精华0 可用积分361  专家积分0  在线时间10 小时 注册时间2003-04-21 最后登录201
0-01-31
状态:...保密...
[微博] [博客] [短信] 
7楼 发表于 2007-10-12 08:51 | 只看该作者
QUOTE:原帖由 leo314034 于 2007-10-11 21:20 发表
多谢楼主!现在改用
另外一种方法了,直接跳过原来读的内容,这样就不用在读过的内容上加标记了。
楼主者谁?
__________________________________
◆ 欢迎访问 Linux 伊甸园 论坛 ◆
Nehalem-EX架构将挑战RISC?| Oracle顶级认证,OCM:高薪的象征 | 《开源时代》2010年第三期 | Novell
Linux迁移有奖大调查!
首页 » 论坛 » Shell »
版块跳转 Linux论坛BSD      BSD文档中心Solaris      Solaris文档中心互操作专区AIX     
X无处不在      AIX文档中心AS400HP-UX      HP文档中心SCO UNIX      SCO文档中心Tru64
UNIXIRIXMac OS XC/C++ShellJava      Java文档中心Php      php文档中心PerlPython
Python文档中心Web开发软件工程中间件技术GUI编程软件配置管理VOIP开发技术CPU与编译器RubyOpenAPIFunctional编程数据仓库与数据挖掘安全技术网络技术
网络技术文档中心存储备份之家      存储文档中心      存储业界     
存储资源下载服务器及硬件技术门户网站运维龙芯技术MySQL     
MySQL文档中心SybaseOraclePostgreSQLDB2InformixWeb服务器Mail服务器FTP服务器DNS服务器Proxy服务器LDAPVPNLotusSamba金融行业电信行业互联网行业制造行业医卫行业教育行业电子政务信息安全交通行业IT业界新闻与评论
关注流感      IT业界快报IT职业生涯IT培训与认证IT采购数据中心IT图书与评论清茶斋      各地快讯投资理财   
财经快报运动地带      体坛快报快乐数码摄影      摄影比赛专区      摄影器材影音娱乐     
文娱播报外语沙龙游戏玩家旅游天下IT爱车族      汽车快报文学小说美食美      美食菜谱CU技术图书大系CU活动专区     
拍卖交流区      CU伴我行站务交流博客站务交流区下载频道交流区  最近访问的版块      服务器及硬件技术      C/C++   
Python      Linux论坛
[收藏此主题]  [关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]
Copyright © 2001-2010 ChinaUnix All Rights Reserved    :
感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处
京ICP证:060528号
清除 Cookies - ChinaUnix - Archiver - WAP - TOP

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。