免费注册 查看新帖 |

Chinaunix

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

脚本里的grep问题,该怎么解决? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-21 14:52 |只看该作者 |倒序浏览
要读取一个文本file里的内容,大致是:
RBS    /dev/vg00/rlvrbs1

RBS2   /dev/vg00/rlvrbs2
           /dev/vg00/rlvrbs3
           /dev/vg00/rlvrbs4

现在我用var=$(cat file|grep $i|awk '{print "\""$2"\""}'
$i是用来调用RBS、RBS2的,即我的本意是当脚本读取到RBS时输出
/dev/vg00/rlvrbs1,读取RBS2时输出/dev/vg00/rlvrbs2 /dev/vg00/rlvrbs3 /dev/vg00/rlvrbs4。而实际上输出RBS时候是/dev/vg00/rlvrbs1、2、3、4了。

这是grep的问题,该怎么修改呢?

论坛徽章:
0
2 [报告]
发表于 2004-04-21 18:34 |只看该作者

脚本里的grep问题,该怎么解决?

myset="RBS2"
var1=$(awk -v var=$myset '{if ($1==var) print NR" "$2}' txt)
line=`echo $var1|awk '{print $1}'`
prt1=`echo $var1|awk '{print $2}'`
echo $prt1
line=`expr $line + 1`
while [ $line -le 10 ]
do
        str=`awk -v var=$line '{if(NR ==var )print $0}' txt`
        if [ ! -z $str]
        then
                echo $str
        else
                break
        fi
        line=`expr $line + 1`
done

论坛徽章:
0
3 [报告]
发表于 2004-04-21 18:57 |只看该作者

脚本里的grep问题,该怎么解决?

我的实验如下:
    如果你的文件是这样的:
RBS /dev/vg00/rlvrbs1

RBS2 /dev/vg00/rlvrbs2

RBS2 /dev/vg00/rlvrbs3

RBS2 /dev/vg00/rlvrbs4
也就是说在3,4行也有RBS2!
那么,我的做法是:
grep -E "\bRBS\b" urfile
grep -E "\bRBS2\b" urfile


请各位高手指正!

论坛徽章:
0
4 [报告]
发表于 2004-04-21 19:22 |只看该作者

脚本里的grep问题,该怎么解决?

先将文本处理一下吧,如:
  1. tr -d '\n'<tmp|awk '{gsub(/ ([A-Z])+/,"\n&");print}'|sed 's/^ //g'
  2. RBS /dev/vg00/rlvrbs1
  3. RBS2 /dev/vg00/rlvrbs2 /dev/vg00/rlvrbs3 /dev/vg00/rlvrbs4
复制代码

论坛徽章:
0
5 [报告]
发表于 2004-04-21 22:30 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2004-04-22 09:35 |只看该作者

脚本里的grep问题,该怎么解决?

不能修改文本,因为文本里的数据是从数据库里select出来的。也不能像ifoolyou 、nkoldbug 那样指定具体的RBS、RBS2,因为RBS*是变动的,要是我以后在数据库里增加RBS3、RBS4……呢?

论坛徽章:
0
7 [报告]
发表于 2004-04-22 10:02 |只看该作者

脚本里的grep问题,该怎么解决?

  1. cat file|xargs|awk '{gsub(/[ ]RBS/,"\nRBS");print}'
复制代码

论坛徽章:
0
8 [报告]
发表于 2004-04-22 14:27 |只看该作者

脚本里的grep问题,该怎么解决?

file文件里还有很多别的内容,比如
system /dev/vg00/rlvsystem
……

所以是不能指定RBS的,只能用一个变量代替

论坛徽章:
0
9 [报告]
发表于 2004-04-22 15:00 |只看该作者

脚本里的grep问题,该怎么解决?

原帖由 "gasidea" 发表:
file文件里还有很多别的内容,比如
system /dev/vg00/rlvsystem
……

所以是不能指定RBS的,只能用一个变量代替


try:
  1. xargs<file|awk {gsub("[ ][a-zA-Z]","\n&");print|sed 's/^ //'
复制代码

论坛徽章:
0
10 [报告]
发表于 2004-04-22 18:27 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP