欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

linux100day(day4)--文本处理三剑客

程序员文章站 2022-04-28 19:53:34
在介绍三剑客之前,先来认识一下通配符和正则表达式 通配符 正则表达式 作用:通过一些特殊字符,来表示一类字符内容 1、字符匹配 . 任意一个字符 [ ] 范围内的任意一个字符 [^ ] 取反 字符类 [:digit:] [:alnum:] [:alpha:] [:lower:] [:upper:] ......

  

在介绍三剑客之前,先来认识一下通配符和正则表达式

通配符
    linux100day(day4)--文本处理三剑客

正则表达式

作用:通过一些特殊字符,来表示一类字符内容

1、字符匹配

  .     任意一个字符

  [ ]   范围内的任意一个字符

  [^ ] 取反

  字符类 [:digit:] [:alnum:] [:alpha:] [:lower:] [:upper:] [:space:] [:punct:]

2、次数匹配

  *    匹配前面的字符0次到多次

  ?  匹配前面的字符0次到1次

  +    匹配前面的字符1次到多次

3、位置锚定

  ^  锚定行首

  $  锚定行尾

  \b  锚定词首和锚定词尾

  \>  锚定词尾

  \<  锚定词首

  <\root\>  匹配root单词

  \{m\}     匹配前面的字符m次

  \{m,n\}  匹配前面的字符m到n次

 

4、分组

  \(\)

  分组特性:默认清空下,linux系统下回为分组指定变量,变量表示形式\1 \2 \3

day4--文本处理三剑客awk,sed,grep

三剑客用法非常灵活强大,需要在练习中慢慢体会,遂以练习为主。

awk(报告生成器)

     awk作为三剑客的老大,擅长于取列,主要用来做文本输出格式化

     awk在处理文件时是逐行处理的

     在awk中,全部行称为$0,第一个字段称为$1,第二个字段称为$2……

     nr为行号,nf表示最后一行

     begin表示最开始执行,end表示最末尾执行,因为这种特性,begin常常用来赋值

     awk  [选项] [处理命令(脚本)]  [文件]

awk -f 指定输入文件折分隔符
awk -v 赋值一个用户定义变量
awk -f 从脚本文件中读取awk命令

      例1、输出/etc/passwd第一行的第一个域

      linux100day(day4)--文本处理三剑客

      例2、打印出/etc/passwd的第3个域和第5个域

      linux100day(day4)--文本处理三剑客

      例3、匹配/var/log/message中,带有erro关键字的相关信息

      linux100day(day4)--文本处理三剑客

      例4、输出/etc/passwd中文件名,行数,列数,和整行信息     

      awk -f ':' '{print filename, nr , nf ,$0}' /etc/passwd

      例5、使用冒号分隔符,查询最后一列

      linux100day(day4)--文本处理三剑客

      例6、使用awk输出第一块网卡的ip地址

       linux100day(day4)--文本处理三剑客

 

sed(流处理器)

    sed作为三剑客的老二,擅长取行,替换和数据搜寻  

    sed [选项] [脚本] [文件]

sed -e 以选项中指定的脚本来处理输入结果
sed -f 以选项中指定的脚本文件来处理输入结果
sed -n 只显示处理后结果
sed -i 替换

    例1、查看/etc/passwd5-10行

      linux100day(day4)--文本处理三剑客

      这个p代表print打印,同理,d代表delete删除

    例2、搜寻/etc/passwd中有root关键字的行

      linux100day(day4)--文本处理三剑客

    例3、新建一个文件,并删除2到4行

      linux100day(day4)--文本处理三剑客

grep(文本行过滤工具)

    grep [option]... pattern [file]

               pattern一般使用两种方法,正则表达式和通配符

    egrep = grep -e 使用扩展的正则表达式进行匹配

    fgrep = fast grep 只使用文件通配符进行匹配

    grep 默认使用正则表达式进行文本匹配

grep -p使用perl语言的正则表达式引擎进行搜索
grep -f指定文件
grep -i 忽略大小写
grep -v反选
grep --color=auto 语法着色
grep -c统计
grep -o输出时仅显示匹配内容(默认输出的是匹配到的行)
grep -n显示行号
grep -w只匹配与整个单词匹配的行

     例1、显示/proc/meminfo文件中大小s开头的行

      linux100day(day4)--文本处理三剑客

     例2、显示/etc/passwd文件中不以/bin/bash结尾的行

      linux100day(day4)--文本处理三剑客

     例3、显示/etc/passwd文件中uid最大的用户的用户名

      linux100day(day4)--文本处理三剑客

     例4、如果用户root存在,显示其默认的shell程序

       linux100day(day4)--文本处理三剑客

      例5、找出/etc/passwd中的两位或三位数

      linux100day(day4)--文本处理三剑客