免费注册 查看新帖 |

Chinaunix

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

[文本处理] shell字符串分割问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-22 15:14 |只看该作者 |倒序浏览
在shell下面执行命令gluster volume info,得到的结果如下:
Volume Name: volume1
Type: Distribute
Volume ID: 6304e435-9856-4503-b0a8-161a12f11181
Status: Started
Number of Bricks: 1
Transport-type: tcp
Bricks:
Brick1: 192.168.2.12:/mnt/zhanshen_vol1

Volume Name: volume_test
Type: Distribute
Volume ID: 0cb10e77-6c79-4c4d-b6bc-7256389edfa9
Status: Started
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: 192.168.2.11:/home/zhanshen/volume_test
Brick2: 192.168.2.13:/home/zhanshen/volume_test
Brick3: 192.168.2.10:/home/zhanshen/volume_test
Brick4: 192.168.2.15:/home/zhanshen/volume_test

Volume Name: volume3
Type: Distribute
Volume ID: d9ee6724-d89e-4b04-a3a7-705fc0350c5f
Status: Started
Number of Bricks: 10
Transport-type: tcp
Bricks:
Brick1: 192.168.2.10:/mnt/zhanshen_vol10
Brick2: 192.168.2.11:/mnt/zhanshen_vol10
Brick3: 192.168.2.12:/mnt/zhanshen_vol10
Brick4: 192.168.2.13:/mnt/zhanshen_vol10
Brick5: 192.168.2.14:/mnt/zhanshen_vol10
Brick6: 192.168.2.15:/mnt/zhanshen_vol10
Brick7: 192.168.2.16:/mnt/zhanshen_vol10
Brick8: 192.168.2.17:/mnt/zhanshen_vol10
Brick9: 192.168.2.18:/mnt/zhanshen_vol10
Brick10: 192.168.2.19:/mnt/zhanshen_vol10
然后我把命令执行的结果保存在变量里面,打印这个变量,换行符全部不见了。
我想实现的功能是根据Valume Name的值来获取它下面的Brick的ip保存在数组里面,然后获取ip地址后面的目录保存在变量里面,请问要怎么处理?

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
2 [报告]
发表于 2014-08-22 15:43 |只看该作者
  1. [root@localhost ~]# awk -F: '/Volume Name/{print $2}$0~/Brick[0-9]:/{print $2}' file1
  2. volume1
  3. 192.168.2.12
  4. volume_test
  5. 192.168.2.11
  6. 192.168.2.13
  7. 192.168.2.10
  8. 192.168.2.15
  9. volume3
  10. 192.168.2.10
  11. 192.168.2.11
  12. 192.168.2.12
  13. 192.168.2.13
  14. 192.168.2.14
  15. 192.168.2.15
  16. 192.168.2.16
  17. 192.168.2.17
  18. 192.168.2.18
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-08-22 15:54 |只看该作者
谢谢,我没怎么用过shell,再问一下,比如我想查找的是Volume Name为volume_test下面的ip地址这个怎么取?不用显示volume_test.

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
4 [报告]
发表于 2014-08-22 16:06 |只看该作者
回复 3# liaolifang3301
  1. [root@localhost ~]# awk -F: '/volume_test/{f=1}$0~/Brick[0-9]:/&&f{print $2;next}{f=0}' file1
  2. 192.168.2.11
  3. 192.168.2.13
  4. 192.168.2.10
  5. 192.168.2.15
  6. [root@localhost ~]#
复制代码

论坛徽章:
0
5 [报告]
发表于 2014-08-22 16:13 |只看该作者
果然是高手啊,能不能volume_name 已变量的形式传进来?比如:
substr="Volume Name: volume_test"
cmd_str=`awk -F: '/$substr/{f=1}$0~/Brick[0-9]:/&&f{print $2;next}{f=0}' file1.txt`       
echo $cmd_str
我试了一下,这样好像得不到结果啊。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
6 [报告]
发表于 2014-08-22 16:18 |只看该作者
本帖最后由 这个冬天不冷 于 2014-08-22 16:22 编辑
liaolifang3301 发表于 2014-08-22 16:13
果然是高手啊,能不能volume_name 已变量的形式传进来?比如:
substr="Volume Name: volume_test"
cmd_s ...
  1. [root@localhost ~]# a=`awk -F: '/volume_test/{f=1}$0~/Brick[0-9]:/&&f{print $2;next}{f=0}' file1`
  2. [root@localhost ~]# s=volume_test
  3. [root@localhost ~]# a=`awk   -F: '/'$s'/{f=1}$0~/Brick[0-9]:/&&f{print $2;next}{f=0}' file1`
  4. [root@localhost ~]# echo $a
  5. 192.168.2.11 192.168.2.13 192.168.2.10 192.168.2.15

复制代码

论坛徽章:
0
7 [报告]
发表于 2014-08-22 16:21 |只看该作者
volume_test要以变量的形式传进来哦。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
8 [报告]
发表于 2014-08-22 16:22 |只看该作者
  1. [root@localhost ~]# s=volume_test
  2. [root@localhost ~]# a=`awk   -F: '/'$s'/{f=1}$0~/Brick[0-9]:/&&f{print $2;next}{f=0}' file1`
  3. [root@localhost ~]# echo $a
  4. 192.168.2.11 192.168.2.13 192.168.2.10 192.168.2.15
复制代码
liaolifang3301 发表于 2014-08-22 16:21
volume_test要以变量的形式传进来哦。

论坛徽章:
9
2015亚冠之大阪钢巴
日期:2015-06-04 11:47:30丑牛
日期:2015-01-22 15:49:26巳蛇
日期:2015-01-22 10:11:18巨蟹座
日期:2014-11-20 10:55:03天蝎座
日期:2014-11-16 22:10:26处女座
日期:2014-11-16 11:01:10申猴
日期:2014-09-19 11:12:37双鱼座
日期:2014-07-25 10:09:54程序设计版块每日发帖之星
日期:2015-08-24 06:20:00
9 [报告]
发表于 2014-08-22 16:35 |只看该作者
$ v=volume_test
$ awk -vRS="Volume Name:" -vFS=":"  '/'"$v"'/{for(i=1;i<NF;i++)if($i~/Brick[0-9]/) print $(i+1)}' a
192.168.2.11
192.168.2.13
192.168.2.10
192.168.2.15

论坛徽章:
9
2015亚冠之大阪钢巴
日期:2015-06-04 11:47:30丑牛
日期:2015-01-22 15:49:26巳蛇
日期:2015-01-22 10:11:18巨蟹座
日期:2014-11-20 10:55:03天蝎座
日期:2014-11-16 22:10:26处女座
日期:2014-11-16 11:01:10申猴
日期:2014-09-19 11:12:37双鱼座
日期:2014-07-25 10:09:54程序设计版块每日发帖之星
日期:2015-08-24 06:20:00
10 [报告]
发表于 2014-08-22 16:37 |只看该作者
回复 8# 这个冬天不冷
  1. awk   -F: '/'$s'/{f=1}$0~/Brick[0-9]:/&&f{print $2;next}{f=0}' file1
复制代码
这样写貌似有问题,
因为匹配volume_test  关键字刚好也包含在ip行中

你试试匹配  Volume Name:    volume3 下面的ip

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP