当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 6 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [问题]关于awk在shell中的运用,达人看下
帖子发表于 : 2006-04-14 9:49 

注册: 2006-04-14 9:48
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
初学shell,遇到个问题,不知道怎么入手,请达人帮忙下一段,自己研究研究。
在a文件夹中,存在未知的几个已命名文件夹,假设现在有3个文件夹,名称分别为:cat,dog,duck 读取它们各自的名称。
在b文件夹中,存在未知的几个txt,假设现在有3个txt,分别为1.txt,2.txt,3.txt 里边的内容格式为一样。内容分别是1.txt中内容 Path: catNumber: 2
2.txt中内容 Path: dogNumber: 3
3.txt中内容 Path: duckNumber: 6
要求是首先从这个a文件目录下获得每个名称,然后对应的在b文件夹中查找number后的数字。
接着对应每个名称去指定的test.txt中查找,假定test.txt内容为:
cat: 3
dog: 1
可以发现少了一个duck: 6 而且test.txt中的cat后应该为2,而不是3 dog后应该为3,而不是1。那么我想做这么个操作,就是Print "NewNumber < OldNumber" ,Print "NewNumber > OldNuber", Print"NewTest"。第一个Pring意思是cat后的number,第2个是指dog,第3个print是指少的那个duck,这步操作的同时把test.txt内容修改为
cat: 2
dog: 3
duck: 6
其中用awk是肯定的吧,但是自己不知道怎么入手,望各位帮忙写写,小弟我研究研究,不胜感激。


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2006-04-14 11:03 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
先问简单点吧。我看了头晕。把问题拆开问。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2006-04-14 13:00 

注册: 2006-04-14 9:48
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
恩。可能看起来长,我写的更异读点吧。很容易理解的,谢谢。
在a文件夹中,存在未知的几个已命名文件夹,假设现在有3个文件夹,名称分别为:cat,dog,duck 读取它们各自的名称。
在b文件夹中,对应着就有3个txt,分别为1.txt,2.txt,3.txt 里边的内容格式为一样。内容分别是
1.txt中内容 Path: cat
Number: 2
2.txt中内容 Path: dog
Number: 3
3.txt中内容 Path: duck
Number: 6
要求是首先从这个a文件目录下获得那3个文件夹的名称就是cat,dog,duck,然后对应的在b文件夹的3个txt中查找number后的数字。
上述可以划分为一个操作。
接着对应每个名称在指定的test.txt中查找,假定test.txt内容为:
cat: 3
dog: 1
可以发现少了一个duck: 6. 而且test.txt中的cat后应该为2,而不是3 .dog后应该为3,而不是1。那么我想做这么个操作,把test.txt内容修改为
cat: 2
dog: 3
duck: 6
上述的2个操作,可以用一个shell脚本写出来吧?


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2006-04-14 13:16 

注册: 2006-04-14 9:48
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
eexpress 写道:
先问简单点吧。我看了头晕。把问题拆开问。

随时关注,初学shell,感觉这个很有意思。想必对服务器的管理也有帮助。朋友写下,我好好研究:) :)


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2006-04-14 13:43 

注册: 2006-04-14 9:48
帖子: 4
送出感谢: 0 次
接收感谢: 0 次
对了,这些cat,dog的文件夹名,和对应的number值,都是可变的。好写吗?


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2006-07-20 23:40 
头像

注册: 2006-07-14 18:56
帖子: 345
地址: Apple Valley, Planet Tux, Linux System
送出感谢: 0 次
接收感谢: 0 次
for name in $(ls a); do echo $name: $(grep $name b/* | egrep -o '[0-9]+') >> test.$$; done; mv test.$$ test.txt

没有测试过,仅供参考。


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

当前时区为 UTC + 8 小时


在线用户

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


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

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

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