Chinaunix首页 | 论坛 | 博客
  • 博客访问: 678309
  • 博文数量: 77
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1173
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-16 11:20
个人简介

将技术做到极致...

文章分类

全部博文(77)

文章存档

2019年(3)

2015年(27)

2014年(47)

分类: LINUX

2015-01-26 15:12:12

一、查找指定字符串
    a、比如我要查找并显示下面文件显示-s之后的数字

点击(此处)折叠或打开

  1. root@Phoenix /service/stage2/syslog#cat run
  2. #!/bin/sh
  3.  
  4. exec /sbin/syslogd -n -b 0 -s 4
     b、sed命令如下

点击(此处)折叠或打开

  1. root@Phoenix /service/stage2/syslog#sed -n '/-s.*$/p' run
  2. exec /sbin/syslogd -n -b 0 -s 4
  3. root@Phoenix /service/stage2/syslog#sed -n '/-s.*$/p' run |sed -e 's/.* //g'
  4. 4

    c、例如要截取上面-b后面的那个数字0

点击(此处)折叠或打开

  1. root@Phoenix /service/stage2/syslog#sed -n '/-b.*$/p' run|sed -e 's/.*-b //g' -e 's/ -s.*$//g'
  2. 0

    d、例如要修改-b后面的那个数字0为4

点击(此处)折叠或打开

  1. root@Phoenix /root#cat run
  2. #!/bin/sh
  3.  
  4. exec /sbin/syslogd -n -b 0 -s
  5. root@Phoenix /root#sed -n '/-b/p' run|sed -i '/\(-s.*$\)/s/\(.*-b \)[0-9]/\14\2/
  6. g' run
  7. root@Phoenix /root#cat run
  8. #!/bin/sh
  9.  
  10. exec /sbin/syslogd -n -b 4 -s


二、查找指定字符串并修改文件,比如查找-s后面的数字4改成6.

点击(此处)折叠或打开

  1. root@Phoenix /service/stage2/syslog#sed -n '/-s.*$/p' run | sed -i 's/-s [0-9]*$/-s 6/' run
  2. root@Phoenix /service/stage2/syslog#cat run
  3. #!/bin/sh
  4.  
  5. exec /sbin/syslogd -n -b 0 -s 6
  6. root@Phoenix /service/stage2/syslog#

三、实例
    sys.conf文件

点击(此处)折叠或打开

  1. root@Phoenix /root#cat sys.conf
  2. eth :
  3. {
  4.   ipaddr = "192.168.5.233";
  5.   netmask = "255.255.255.0";
  6.   gateway = "192.168.1.1";
  7.   mac = "00:01:02:03:04:05";
  8.   dhcp = 1;
  9. };
  10. mag :
  11. {
  12.   is_strict = 0;
  13. };
  14. ppp :
  15. {
  16.   PppAsynmap = 1;
  17.   PppEscape = 0;
  18.   PppIpcp = 0;
  19. };
  20. kdb :
  21. {
  22.   keysensitive = 0;
  23.   beepvolumn = 1;
  24. };
  25. root@Phoenix /root#
    例一、删除sys.conf配置文件中eth这个节点的配置信息,并修改配置文件。

点击(此处)折叠或打开

  1. root@Phoenix /root#sed -ie '/^eth/,/};/d' sys.conf
  2. root@Phoenix /root#cat sys.conf
  3. mag :
  4. {
  5.   is_strict = 0;
  6. };
  7. ppp :
  8. {
  9.   PppAsynmap = 1;
  10.   PppEscape = 0;
  11.   PppIpcp = 0;
  12. };
  13. kdb :
  14. {
  15.   keysensitive = 0;
  16.   beepvolumn = 1;
  17. };
  18. root@Phoenix /root#


    例二、查询kdb节点,beepvolumn这个字段的配置值。

点击(此处)折叠或打开

  1. root@Phoenix /root#sed -n '/^kdb/,/};/p' sys.conf|sed -ne '/beepvolumn =/p'|sed -e 's/.*beepvolumn = //g' -e 's/;$//g'
  2. 1
  3. root@Phoenix /root#

    例三、修改kbd节点,beepvolumn这个字段值为10,并修改文件
方法一、

点击(此处)折叠或打开

  1. root@Phoenix /root#sed -ne '/kdb/,/};/p' sys.conf|sed -n '/.*beepvolumn = /p'|sed -i 's/beepvolumn = .*$/beepvolumn = 10;/' sys.conf
  2. root@Phoenix /root#cat sys.conf
  3. mag :
  4. {
  5.   is_strict = 0;
  6. };
  7. ppp :
  8. {
  9.   PppAsynmap = 1;
  10.   PppEscape = 0;
  11.   PppIpcp = 0;
  12. };
  13. kdb :
  14. {
  15.   keysensitive = 0;
  16.   beepvolumn = 10;
  17. };
方法二、

点击(此处)折叠或打开

  1. root@Phoenix /root#sed -i '/\(;$\)/s/\([ \t]beepvolumn = \)[0-9]\{1,\}/\110\2/g' sys.conf
  2. root@Phoenix /root#cat sys.conf
  3. mag :
  4. {
  5.   is_strict = 6;
  6. };
  7. ppp :
  8. {
  9.   PppAsynmap = 6;
  10.   PppEscape = 6;
  11.   PppIpcp = 911;
  12. };
  13. kdb :
  14. {
  15.   keysensitive = 6;
  16.   beepvolumn = 10;
  17. };
  18. root@Phoenix /root#



总结:sed命令是不是很好用啊。

阅读(2821) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

cfm55382015-01-28 17:17:31

截取ifconfig命令输出ip地址、子网掩码、网关:
root@Phoenix /root#ifconfig eth0|sed '/inet addr/!d'|sed 's/[ \t]//g;s/:/=/g'|se
d 's/\(inetaddr=\)\([0-9]*.[0-9]*.[0-9]*.[0-9]*\)\(Bcas=\)\([0-9]*.[0-9]*.[0-9]
*.[0-9]*\)\(Mask=\)\([0-9]*.[0-9]*.[0-9]*.[0-9]*\)/\1\2\n\3\4\n\5\6/g'
inetaddr=192.168.5.233
Bcas=192.168.5.255
Mask=255.255.255.0
root@Phoenix /root#