当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 11 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 出现不明错误???
帖子发表于 : 2009-04-26 17:02 
头像

注册: 2008-10-08 13:48
帖子: 3476
送出感谢: 0 次
接收感谢: 1
我有文本内容如下
file-1
1| 0.322| 0.715| 3.480| 0| 0.322| 3.480
2| 0.019| 0.709| 2.582| 0| 0.019| 3.480
3| 0.016| 0.686| 2.702| 0| 0.016| 3.480
4| 0.072| 0.712| 2.567| 0| 0.016| 3.480
5| 0.031| 0.779| 3.876| 0| 0.016| 3.876
6| 0.024| 0.717| 3.076| 0| 0.016| 3.876
7| 0.015| 0.723| 3.503| 0| 0.015| 3.876
8| 0.123| 0.728| 3.877| 0| 0.015| 3.877
9| 0.275| 0.731| 2.664| 0| 0.015| 3.877
10| 0.276| 0.843| 2.811| 0| 0.015| 3.877

file-2
em01.gif
em02.gif
em03.gif
em04.gif
em05.gif
em06.gif
em07.gif
em08.gif
em09.gif
em10.gif
我想用file-2的内容替换file-1中的1-10:
代码:
awk -F "|" '{getline i <file_2;gsub($1,i,$0);print $0>FILENAME}' file_1

结果如下
em01.gif| 0.322| 0.7em01.gif5| 3.480| 0| 0.322| 3.480
em02.gif| 0.019| 0.709| em02.gif.58em02.gif| 0| 0.019| 3.480
em03.gif| 0.016| 0.686| 2.702| 0| 0.016| em03.gif.480
em04.gif| 0.072| 0.712| 2.567| 0| 0.016| 3.em04.gif80
em05.gif| 0.031| 0.779| 3.876| 0| 0.016| 3.876
em06.gif| 0.024| 0.717| 3.07em06.gif| 0| 0.01em06.gif| 3.87em06.gif
em07.gif| 0.015| 0.em07.gif23| 3.503| 0| 0.015| 3.8em07.gif6
em08.gif| 0.123| 0.72em08.gif| 3.em08.gif77| 0| 0.015| 3.em08.gif77
em09.gif| 0.275| 0.731| 2.664| 0| 0.015| 3.877
em100.gif| 0.276| 0.843| 2.811| 0| 0.015| 3.877
分格符后面的也被替换了这是为什么???


_________________
--------------------------------------
论坛精华贴全集:http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=199845
book:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=198286


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 出现不明错误???
帖子发表于 : 2009-04-26 21:17 
头像

注册: 2008-10-08 13:48
帖子: 3476
送出感谢: 0 次
接收感谢: 1
:em18 没人帮我……


_________________
--------------------------------------
论坛精华贴全集:http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=199845
book:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=198286


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 出现不明错误???
帖子发表于 : 2009-04-26 22:50 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
awk -F "|" '{getline i <file_2;gsub("^"$1,i,$0);print $0>FILENAME}' file_1

其实我开始也不了解awk里的gsub的用法, 但看你的结果, 显然$1不是特指开始的那个位置, 而是之那个位置上的数字。所以, 在gsub里的$1前加个表示行首的"^"就成了


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 出现不明错误???
帖子发表于 : 2009-04-26 23:43 
头像

注册: 2008-10-08 13:48
帖子: 3476
送出感谢: 0 次
接收感谢: 1
yjcong 写道:
awk -F "|" '{getline i <file_2;gsub("^"$1,i,$0);print $0>FILENAME}' file_1

其实我开始也不了解awk里的gsub的用法, 但看你的结果, 显然$1不是特指开始的那个位置, 而是之那个位置上的数字。所以, 在gsub里的$1前加个表示行首的"^"就成了

$1表示awk读入的第一个字段,gsub是awk的内部函数,$1在gsub内的意义不会变呀……


_________________
--------------------------------------
论坛精华贴全集:http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=199845
book:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=198286


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 出现不明错误???
帖子发表于 : 2009-04-27 1:32 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
jioyo源 写道:
yjcong 写道:
awk -F "|" '{getline i <file_2;gsub("^"$1,i,$0);print $0>FILENAME}' file_1

其实我开始也不了解awk里的gsub的用法, 但看你的结果, 显然$1不是特指开始的那个位置, 而是之那个位置上的数字。所以, 在gsub里的$1前加个表示行首的"^"就成了

$1表示awk读入的第一个字段,gsub是awk的内部函数,$1在gsub内的意义不会变呀……


用你的命令
当读取第1行的时候, $1表示1.看看你给的结果, 第1行里所有的“1”都被替换成fem01.gif
当读取第2行的时候, $1表示2.看看你给的结果, 第2行里所有的“2”都被替换成fem02.gif
当读取第3行的时候, $1表示3.看看你给的结果, 第3行里所有的“3”都被替换成fem03.gif
.
.
.
当读取第N行的时候, $1表示N。 看看你给的结果, 第N行里所有的“N”都被替换成femN.gif
.
.


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 出现不明错误???
帖子发表于 : 2009-04-27 1:45 
头像

注册: 2008-10-08 13:48
帖子: 3476
送出感谢: 0 次
接收感谢: 1
yjcong 写道:
jioyo源 写道:
yjcong 写道:
awk -F "|" '{getline i <file_2;gsub("^"$1,i,$0);print $0>FILENAME}' file_1

其实我开始也不了解awk里的gsub的用法, 但看你的结果, 显然$1不是特指开始的那个位置, 而是之那个位置上的数字。所以, 在gsub里的$1前加个表示行首的"^"就成了

$1表示awk读入的第一个字段,gsub是awk的内部函数,$1在gsub内的意义不会变呀……


用你的命令
当读取第1行的时候, $1表示1.看看你给的结果, 第1行里所有的“1”都被替换成fem01.gif
当读取第2行的时候, $1表示2.看看你给的结果, 第2行里所有的“2”都被替换成fem02.gif
当读取第3行的时候, $1表示3.看看你给的结果, 第3行里所有的“3”都被替换成fem03.gif
.
.
.
当读取第N行的时候, $1表示N。 看看你给的结果, 第N行里所有的“N”都被替换成femN.gif
.
.

:em18
我也不知道为什么,所以才求助呀,错在哪里呢……


_________________
--------------------------------------
论坛精华贴全集:http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=199845
book:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=198286


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 出现不明错误???
帖子发表于 : 2009-04-27 1:57 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
a="2.22A222.222222.22222222.22222222222"
echo $a|awk -F. '{print $1;gsub($1,99999,$b);print $b}'
==>
2
99999.9999999999A999999999999999.999999999999999999999999999999.9999999999999999999999999999999999999999.9999999999999999999999999999999999999999999999999999999

我不了解awk, 但这里的$1显然会在被使用是自动替换成2, 所以, 你说的“gsub是awk的内部函数,$1在gsub内的意义不会变呀”不对。 或者你对“$1在gsub内的意义不会变”理解有误

如果你坚持“$1在gsub内的意义不会变”, 应该找几个例子吧


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 出现不明错误???
帖子发表于 : 2009-04-27 10:17 
头像

注册: 2008-10-08 13:48
帖子: 3476
送出感谢: 0 次
接收感谢: 1
:em03 知道怎么回事了,谢谢了
$1在gsub中的意义并没有变,只是在gsub中,将$1作为正则来匹配,然后进行全局替换,改gsub为sub就可以了

em01.gif| 0.322| 0.715| 3.480| 0| 0.322| 3.480
em02.gif| 0.019| 0.709| 2.582| 0| 0.019| 3.480
em03.gif| 0.016| 0.686| 2.702| 0| 0.016| 3.480
em04.gif| 0.072| 0.712| 2.567| 0| 0.016| 3.480
em05.gif| 0.031| 0.779| 3.876| 0| 0.016| 3.876
em06.gif| 0.024| 0.717| 3.076| 0| 0.016| 3.876
em07.gif| 0.015| 0.723| 3.503| 0| 0.015| 3.876
em08.gif| 0.123| 0.728| 3.877| 0| 0.015| 3.877
em09.gif| 0.275| 0.731| 2.664| 0| 0.015| 3.877
em10.gif| 0.276| 0.843| 2.811| 0| 0.015| 3.877


_________________
--------------------------------------
论坛精华贴全集:http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=199845
book:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=198286


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 出现不明错误???
帖子发表于 : 2009-04-27 10:46 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
gsub(regular expression, substitution string, target string)

但是即使用gsub也可以啊, 正则就正则了, 加个^就成了。

awk -F "|" '{getline i <file_2;gsub("^"$1,i,$0);print $0>FILENAME}' file_1


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 出现不明错误???
帖子发表于 : 2009-04-27 18:44 
头像

注册: 2008-10-08 13:48
帖子: 3476
送出感谢: 0 次
接收感谢: 1
yjcong 写道:
gsub(regular expression, substitution string, target string)

但是即使用gsub也可以啊, 正则就正则了, 加个^就成了。

awk -F "|" '{getline i <file_2;gsub("^"$1,i,$0);print $0>FILENAME}' file_1

:em03 嗯,谢谢……
嗯,那个……“^”为什么要加双引号,我试了下不加,不行,用/^$1/也不行,这是为什么??


_________________
--------------------------------------
论坛精华贴全集:http://forum.ubuntu.org.cn/viewtopic.php?f=48&t=199845
book:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=198286


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 出现不明错误???
帖子发表于 : 2009-04-27 22:00 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
jioyo源 写道:
yjcong 写道:
gsub(regular expression, substitution string, target string)

但是即使用gsub也可以啊, 正则就正则了, 加个^就成了。

awk -F "|" '{getline i <file_2;gsub("^"$1,i,$0);print $0>FILENAME}' file_1

:em03 嗯,谢谢……
嗯,那个……“^”为什么要加双引号,我试了下不加,不行,用/^$1/也不行,这是为什么??


加引号也是我试出来的,原因不明。反正不同的软件都有一套自己的正则,我怀疑是gsub特有的, 但不确定。等那些牛人来解答吧。

但我觉得用sub会节省些运行的消耗


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 11 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译