免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1309 | 回复: 7
打印 上一主题 下一主题

关于shell的问题 望前辈们赐教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-09 18:39 |只看该作者 |倒序浏览
我是刚学linux的新人 师傅布置我作业让我完成一个shell脚本,要求实现下面功能:

1、在同一目录众多打包文件里解压缩指定文件
2、然后在指定文件中寻找2个特定关键字并列出关键字所在行,输入到不同路径下建立和搜索到关键字的文件同名的文件

我已经搜索了相关网站但是没有找到相关的文章或者和我师傅所要求达到的功能相差很大,所以羞愧的希望各位前辈给与指教。

论坛徽章:
0
2 [报告]
发表于 2007-03-10 00:11 |只看该作者
第一个可以直接man tar就可以
第二个的第一问,可以用cat实现,至于第二问嘛搭配管道符号使用,应该可以的

论坛徽章:
0
3 [报告]
发表于 2007-03-10 09:43 |只看该作者
可不可以说的详细一些
还有第二步我觉得用grep+管道命令比较好 但是具体操作不知道
请各位大大伸出援手 帮我一下

论坛徽章:
0
4 [报告]
发表于 2007-03-10 10:31 |只看该作者
其实我现在对于第一条用tar来实现 第二条前面用grep

但是搜索每个文件出来的关键字所在行 如何保存到其他路径并用相同的文件名

这点我始终不知道该怎么入手 每个保存的文件名都不同而且还要和搜索的目标

文件名相同怎么实现呢。。。[在线等]先谢谢了~

论坛徽章:
0
5 [报告]
发表于 2007-03-12 10:15 |只看该作者
真的没人能够帮助我吗 唉...

论坛徽章:
0
6 [报告]
发表于 2007-03-12 12:43 |只看该作者
既然文件名已经指定了,不论参数还是终端输入都可以调用
#cat test1.sh
#!/bin/sh
tar xvf $1 $2 | egrep "$3|$4" $2 > ./1/$2

# ./test1.sh test.tar bbb b t (解压test1.tar中指定的bbb文件,搜索b和t 两个关键字
x bbb
# more ./1/bbb
bbbttt
aaabbbttt

不知道有没理解错楼主的题意

论坛徽章:
0
7 [报告]
发表于 2007-03-12 14:24 |只看该作者
原帖由 dream8888 于 2007-3-12 12:43 发表
既然文件名已经指定了,不论参数还是终端输入都可以调用
#cat test1.sh
#!/bin/sh
tar xvf $1 $2 | egrep "$3|$4" $2 > ./1/$2

# ./test1.sh test.tar bbb b t (解压test1.tar中指定的bbb文件 ...


真心感谢你的回复,可能我的需求写的不够清楚:
1.首先在所有压缩包中解压文件 其中文件名中带a和b字母的文件为我要搜索的目标文件[目标文件很多]

2.然后搜索多个目标文件,查找每个文件中带有c和d字母的行 输出到另一个目录保存为文件[文件名要求
  和搜索到c和d字母的目标文件同名]也就是说 当我最后浏览保存后的文件内容能够知道出自哪个目标文
  件。

急切希望知道答案 希望能够再次见到你的回复~谢谢!

[ 本帖最后由 hakaixin 于 2007-3-12 14:25 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2007-03-12 17:43 |只看该作者
#!/bin/sh                  
echo -n "Tar files:"        
read tar                    
echo -n "File keywords:"  //输入awk 正则表达式   
read file_keywords         
echo -n "Word keywords:"   
read word_keywords          //egrep 正则表达式
                           
for i  in `tar tvf $tar | awk  '$9 ~ /'"$file_keywords"'/{print $9}'`
do                          
tar xvf $tar  $i | egrep "$word_keywords" $i  > ./1/$i    //1为目录
done  



# ./test1.sh
Tar files:test.tar
File keywords:a|b
Word keywords:c|d
x aaa
x bbb
# ls ./1/
aaa     bbb
# more ./1/bbb
ccccccccccccdd
dderdcc


xvf怎么也传不了数据,只能用t先得到了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP