马哥linux分享之Linux三剑客之sed和awk的基本应用

sed、awk和grep被称为Linux的三剑客,本文主要讲述sed和awk的基本应用,关于grep和正则表达式的应用,请移步本人的另外一篇博文,链接为 http://wangfeng7399.blog.51cto.com/3518031/1360804 
一、sed 
1)sed简介 
  sed的全称为stream editor,sed在处理时一次只读取文件的一行并对这一行进行处理,并且sed将处理后的数据只会显示在屏幕上,并不会对原文件进行修改,所以说sed是一个行编辑器 
2)sed的使用格式 
      sed [options] "script" FILE.... 
3)详解各选项与编辑命令的使用 
    选项: 
     -n:静默模式,不输出模式空间内的内容,默认打印空间模式内的内容 
     -r:扩展的正则表达式 
     -f 文件:指定sed脚本文件 
     -i:直接编辑源文件 
    编辑命令 
      d:删除 
      p:打印 
      i \:在被指定到的行前面插入文本 
      a \:在被指定到的行下面插入文本 
      r 文件路径:在指定的位置插入另外一个文件的内容 
      w 文件路径:将符合条件的所有行保存至指定的文件中 
      = 显示符合条件的所在行的行号 
      s@@@:查找条件也可以使用模式,但是被替换的内容不能使用模式   
          使用格式: 
              sed '地址定界s@查找条件@替换后的文本@修饰符 
              地址定界:自定义的起始行到结束行,默认为全文 
                   有三种方式表示 
                      startline,endline 
                        /pat1/,/pat2/ 
                        /pattern/ 
              用法:sed [options] 'addr1[,addr2]编辑命令'FILE... 
                   sed [options] "addr1[,addr2]编辑命令"FILE... 
                  sed在做替换时还支持正则表达式,正则表达式的使用本处不做讲解。 
              修饰符: 
                   g:global,全局替换 
                   i:ignore-case,不区分字符大小写 
4)练习 
1)替换/etc/inittab文件中”id:3:initdefault:"一行中的数字为5 
   

sed 's@\(id:\)[0-9]\(:initdefault\)@\15\2' /etc/inittab


2)删除/etc/init.d/funcions文件中的空白行 
   

sed "/^$/d" /etc/init.d/funcions


3)删除/etc/inittab文件中位于行首的#; 
   

sed 's@^#@@g' /etc/inittab

 
4)删除/etc/rc.d/rc.sysinit文件中以#后跟至少一个空白字符开头的行的行首的#和空白字符。 
   

sed "s@^#[[:space:]]\{1,\}\@@g" /etc/rc.d/rc.sysinit


5)删除/boot/grub/grub.conf文件中行首的空白字符。 
 

 sed "s@^[[:space:]]\{1,\}@@g" /boot/grub/grub.conf


6)取出一个文件路径的目录名称,如/etc/sysconfig/network,其目录为/etc/sysconfig,功能类似dirname命令; 
 

 echo /etc/sysconfig/network | sed "s@[^/]\{1,\}/\?$@@"


二、awk 
1)简介 
  awk是一个报告生成工具,旨在把文件中读取到的每一行的每个字段分别进行格式化,而后进行显示,awk支持使用变量、条件判断、循环、数组 
  现在linux系统上用到的都是gawk 
2)格式: 
  awk [options] 'script'FILE.... 
  awk [options] '/pattern/{action}'FILE... 
3)选项与模式的使用 
   选项 
    -F:指定切割符,默认为空白 
    $0:整行显示 
    $1,$2.......:位置参数 
   模式 
      地址定界: 
       /pat1/,/pat2/,表示一个范围 
       /pattern/,表示被匹配到的行 
       表达式 
       >,>=,<,<=,==,!=,~ 
      BEGIN:表示在执行动作前要做的操作 
      END:表示在动作执行后的操作 
  awk的常用四种分隔符: 
      输入: 
         行分隔符 
         字段分隔符 
      输出: 
         行分隔符 
         字段分隔符   
    awk的内置变量 
     NF:最后一个字段 
     FS:指定输入分隔符,在BEGIN中定义,相当于-F,默认为空白 
     OFS:指定输出时的分隔符,在BEGIN中定义,默认为空白 
4)练习 
1.显示GID小于500的组 

    awk -F : '$3<500{print $1}' /etc/group


2.显示默认的shell为nologin的用户 
    awk -F : '$7~/nologin$/{print $1}' /etc/passwd 
3,显示eth0网卡文件的配置信息,注意,只显示等号后面的值 
    awk -F = '{print $2}' /etc/sysconfig/network-scripts/ifcfg-eth0 
4.显示/etc/sysctl。conf文件中定义的内核参数:只显示名称, 
    awk -F =' !/^#|^$/{print $1}'/etc/sysctl.conf 
5.显示eth0网卡的ip地址,通过ifconfig命令结果进行过滤 
   ifconfig eth0 |awk '/inet addr/{print $2}' |awk -F : '{print $2}'

转载于:https://my.oschina.net/u/139883/blog/672548

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值