Linux中的文本处理工具(二)

一、Linux上文本处理三剑客

    grep:文本过滤(模式:pattern)工具;

    grep, egrep, fgrep(不支持正则表达式搜索)

    sed:stream editor,文本编辑工具;

    awk:Linux上的实现gawk,文本报告生成器;

 

1.grep

    grep: Global search REgularexpression and Print out the line.(全球搜索正则表达式,并打印成一行)

作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行

 模式:由正则表达式字符及文本字符所编写的过滤条件

  grep [OPTIONS] PATTERN [FILE...]

      grep root /etc/passwd

      grep "$USER" /etc/passwd

      grep ‘$USER‘ /etc/passwd

      grep `whoami` /etc/passwd

2.grep命令表达式:

     --color=auto: 对匹配到的文本着色显示

      -v: 显示不能够被pattern匹配到的行;

      -i: 忽略字符大小写

      -n:显示匹配的行号

     -c: 统计匹配的行数

      -o: 仅显示匹配到的字符串;

      -q: 静默模式,不输出任何信息

      -A #:after, 后#行

      -B #: before, 前#行

      -C #:context, 前后各#行

      -e:实现多个选项间的逻辑or关系

         如:grep –e ‘cat ’ -e ‘dog’ file

      -w:整行匹配整个单词

      -E:使用ERE

二、正则表达式

   REGEXP:由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能

程序支持:grep, vim, less,nginx

分两类:

基本正则表达式:BRE

     扩展正则表达式:ERE

       grep -E, egrep

正则表达式引擎:

采用不同算法,检查处理正则表达式的软件模块

PCRE(Perl Compatible Regular Expressions)

元字符分类:字符匹配、匹配次数、位置锚定、分组

   man 7 regex

  1.基本正则表达式元字符

    字符匹配:

      . :匹配任意单个字符;

       [] :匹配指定范围内的任意单个字符

       [^] :匹配指定范围外的任意单个字符

       [:digit:]、[:lower:]、[:upper:]、[:alpha:]、[:alnum:]、 

       [:punct:]、[:space:]

    匹配次数

匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

         *  匹配前面的字符任意次,包括0

贪婪模式:尽可能长的匹配

         .*  :任意长度的任意字符

         \?  :匹配其前面的字符01

         \+  :匹配其前面的字符至少1

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

         \{m,n\}:匹配前面的字符至少m次,至多n

         \{,n\}:匹配前面的字符至多n

         \{m,\}:匹配前面的字符至少m

    位置锚定

      位置锚定:定位出现的位置

       ^:行首锚定,用于模式的最左侧

       $:行尾锚定,用于模式的最右侧

         ^PATTERN$: 用于模式匹配整行

         ^$: 空行,不包含有空格的行

         ^[[:space:]]*$ :空白行,包含有空格的行

         \< 或\b:词首锚定,用于单词模式的左侧

         \> 或\b:词尾锚定;用于单词模式的右侧

         \<PATTERN\>:匹配整个单词

    分组

    (1)分组:\(\):将一个或多个字符捆绑在一起,当作一个整体进行处理,如:\(root\)\+

    (2)分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, ...

    (3)\1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;

实例:\(string1\+\(string2\)*\)

\1: string1\+\(string2\)*

\2: string2

    (4)后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本身)

2.egrep和扩展的正则表达式

     egrep= grep -E

   egrep[OPTIONS] PATTERN [FILE...]

    扩展正则表达式的元字符

      字符匹配:

         . 代表任意单个字符

         [] 指定范围的字符

         [^] 不在指定范围的字符

      次数匹配:

         *:匹配前面字符任意次

         ?: 0或1次

         +:1次或多次

        {m}:匹配m次

        {m,n}:至少m,至多n次

      位置锚定:

         ^ :行首

         $ :行尾

        \<, \b:语首

        \>, \b:语尾

      分组:

         ()

       后向引用:\1, \2, ...

      或者:

          a|b

          C|cat: Ccat

         (C|c)at:Catcat

练习(一):

   

   1、显示/proc/meminfo文件中以大小s开头的行;(要求:使用两种方式)

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

3、显示用户rpc默认的shell程序

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

5、显示/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面存非空白字符的行

6、找出"netstat -tan"命令的结果中以‘LISTEN‘后跟任意空白字符结尾的行

7、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin),而后找出/etc/passwd文件中用户名同shell名的行

 练习(二)

   1、显示当前系统root、mage或wang用户的UID和默认shell

2、找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行

3、使用egrep取出/etc/rc.d/init.d/functions中其基名

4、使用egrep取出上面路径的目录名

5、统计以root身份登录的每个远程主机IP地址的登录次数

6、利用扩展正则表达式分别表示0-9、10-99、100-199、200-249、250-255

7、显示ifconfig命令结果中所有IPv4地址

时间: 2024-09-29 22:27:40

Linux中的文本处理工具(二)的相关文章

&nbsp; &nbsp; linux 中的文本处理工具,grep,egrep

一:grep与egrep简介:                    grep与egrep是在linux中对linux文本搜索用的比较多的一个工具.它结合正则表达式实现与模型匹配的行. 二:语法格式: grep [option]... 'PATTERN' FILE... 支持基本正则表达式                  egrep [option]... 'PATTERN' FILE...支持扩展正则表达式                  [option]常用的主要有:          

linux 中的 文本处理工具

文本处理工具 在linux系统中 文本工具有很多 现在具体介绍几款 如 抽取文本的工具 和文件三剑客 文件内容:less和 cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep egrep 首先 有 查看文件的cat tac cat [OPTION]... [FILE]... -E: 显示行结束符$ -n: 对显示出的每一行进行编号 -A:显示所有控制符 -b:非空行编号 -s:压缩连续的空行成一行 tac 与cat 命令 一样 不过是取反 more: 分页查看文件 m

Linux中的文本处理工具(一)

本章内容:   一.各种文本工具来查看.分析,统计文本文件   二.grep   三.正则表达式   四.扩展正则表达式   五.Sed 具体内容如下: 一.抽取文本的工具: 文件内容:less和cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep   1.文件查看命令:cat, tac,rev    cat [OPTION]... [FILE]...        -E: 显示行结束符$        -T:显示Tab键        -v:显示Windows的空格字

Linux中关于文本查看和处理的常用命令

            Linux中关于文本查看和处理的常用命令 一.学习目标         掌握以下命令:             查看文本: cat .tac.more.less.head.tail             文本处理:cut.sort.uniq.wc.tr 二.查看文本命令        cat : 连接并显示文本 cat [options] file,... -n :显示行号 -E :显示结束符$ more :分屏查看文件 space键: 向后翻一屏 b键:向前翻一屏 e

Linux系统中的文本处理工具

在大家刚接触Linux操作系统,首先都会让你了解linux的哲学思想:一切皆文件:那么今天就带大家认识linux中的一些文本查看工具. 1.cat和tac 连接文件并在标准输出上打印:其中cat是正向显示:tac是倒着显示 格式:cat [  options ]... [ FILE ]... 选项: -E filename 能看到行的结束符 -A filename 能看到tab键 回车 -n filename 加行号 -s filename 压缩空行(连续相邻的空行) -b 加行号,但空行不加 

Linux基础之文本处理工具grep及正则表达式(附带egrep与grep的不同)

文本处理工具grep,正则表达式在Linux学习过程中很容易出现困惑与障碍的地方,这里分享下学习这方面内容的一些感受. grep Global search REgular expression and Print out the line 作用:文本搜索工具,根据用户指定的'模式(过滤条件)'对目标文本逐行进行匹配检查:打印匹配到的行: '模式':由正则表达式的元字符及文本字符所编写出的过滤条件. grep [OPTIONS] PATTERN [FILE...] grep [OPTIONS]

linux中的文本处理方法集锦

sed awk grep 这三个工具都要用到正则表达式,把常用贴出来. 1.行的匹配 [[email protected] /]# sed -n '2p' /etc/passwd  打印出第2行 [[email protected] /]# sed -n '1,3p' /etc/passwd 打印出第1到第3行 [[email protected] /]# sed -n '$p' /etc/passwd   打印出最后一行 [[email protected] /]# sed -n '/user

Linux 之 awk文本分析工具

AWK是一种处理文本文件的语言,是一个强大的文本分析工具.Linux环境中自带. awk调用方法 命令行 awk [-F field-separator] 'commands' input-file(s) shell脚本方式 #!/bin/sh awk脚本方式 `#!/bin/awk awk -f 脚本文件 待处理文件 原文地址:https://www.cnblogs.com/yoyoyang/p/11822965.html

Linux 基础之文本搜索工具grep

一.grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.Unix的grep家族包括grep.egrep和fgrep grep: 默认支持基本正则表达式: egrep: 扩展正则表达式: fgrep: 不支持正则表达式元字符,搜索字符串的速度快 二.通过man手册获取grep帮助信息: #man grep GREP(1)