shell中的文本处理(grep,sed,awk命令)

  • grep    文本过滤命令
  • sed    行编辑器
  • awk    报告生成器


一、grep命令

  •     全面搜索研究正则表达式并显示出来grep 命令是一种强大的文本搜索工具 , 根据用户指定的“模式”对目标文本进行匹配检查 , 打印匹配到的行
  •     由正则表达式或者字符及基本文本字符所编写的过滤条件

grep       匹配条件   处理文件

-a 不要忽略二进制数据。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-i 忽略字符大小写的差别。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-s 不显示错误信息。
-v 反转查找。

    ^    匹配字符串开始

    $    匹配字符串结尾

例如:

    grep root passwd    #匹配root关键字
    grep ^root passwd    #匹配开始字符串为root
    grep root$ passwd    #匹配字符串结尾为root
    grep -i root passwd    #忽略大小写匹配root

    grep -E "root|ROOT" passwd    #扩展正则表达式,匹配root或ROOT



grep 中字符的匹配次数设定

        * 字符出现 [0- 任意次 ]
        \? 字符出现 [0-1 次 ]
        \+ 字符出现 [1- 任意次 ]
        \{n\} 字符出现 [n 次 ]
        \{m,n\} 字符出现 [ 最少出现 m 次,最多出现 n 次 ]
        \{0,n\} 字符出现 [0-n 次 ]
        \{m,\} 字符出现 [ 至少 m 次 ]

        \(xy\)\{n\}xy 关键字出现 [n 次 ]




  • 加上-E后可以省略转意\字符


sed 行编辑器

   用来操作纯 ASCII 码的文本
    处理时 , 把当 前处理的行存储在临时缓冲区中 , 称为“模式空间” (pattern space) 可以指定仅仅处理哪些行
sed 符合模式条件的处理 不符合条件的不予处理,处理完成之后把缓冲区的内容送往屏幕接着处理下一行 , 这样不断重复 , 直到文件末尾


调用 sed 命令有两种形式:
  • sed [options] 'command' file(s)
  • sed [options] -f scriptfile file(s)

在文件sedfile中写上匹配字符



sed 对字符的处理
    p 显示
    d 删除
    a 添加
    c 替换
    w 写入
    i 插入

  • p 模式操作

  • d 模式操作

  • w 模式操作
  • 把以UUID开始的行保存到/mnt/sedfile

  • 第六行写上/mnt/sed的内容


  • 2-4行写到文件/mnt/sedfile中



其他用法
=    #加上行号

  • G    #添加空行




awk 报告生成器


    awk 处理机制 :awk 会逐行处理文本 , 支持在处理第一行之前做一些准备工作 , 以及在处理完最后一行做一些总结性质的工作 , 在命令格式
上分别体现如下 :
    BEGIN{}: 读入第一行文本之前执行 , 一般用来初始化操作
    {}: 逐行处理 , 逐行读入文本执行相应的处理 , 是最常见的编辑指令快

    END{}: 处理完最后一行文本之后执行 , 一般用来输出处理结果

awk 的基本用法

    awk '{print 第 "NR" 行 , 有 "NF" 列 }

    awk 'BEGIN{a=0}{a++}END{print a}' passwd
    awk 
-F : '/^ro/{print}' /etc/passwd
    awk 
-F : '/^[a-d]/{print $1,$6}' passwd
    awk 
-F : '$6~/bin$/{print $1,$6}' passwd
    awk 
-F : '$7!~/nologin$/{print $1,$7}' passwd



  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值