DAY7:文本处理工具及正则表达式

8月4号,主要学习内容如下:

一、抽取文本的工具:less,cat,head,tail,cut

二、分析文本的工具:wc,sort,diff,patch

二、grep及正则表达式

三、egrep扩展正则表达式



一、抽取文本的工具

1)文件查看命令:

  • cat  [OPTION]... [FILE]...

    -E: 显示行结束符$

    -n: 对显示出的每一行进行编号

    -A:显示所有控制符

    -b:非空行编号

    -s:压缩连续的空行成一行

  • tac

    功能与cat相同,显示内容为cat的逆序

2)分页查看工具

  • more:分页查看文件

    more [OPTIONS...] FILE...

    -d: 显示翻页及退出提示

  • less:一页一页地查看文件或STDIN输出
    查看时有用的命令包括:

    /文本 搜索 文本

    n/N 跳到下一个 or 上一个匹配

    less 命令是man命令使用的分页器

3)显示文本前或后行内容

  • head

    head [OPTION]... [FILE]...

    -c #: 指定获取前#字节

    -n #: 指定获取前#行

    -#: 指定行数(同-n#)

  • tail

    tail [OPTION]... [FILE]...

    -c #: 指定获取后#字节

    -n #: 指定获取后#行

    -#:指定行数

    -f: 跟踪显示文件新追加的内容,常用日志监控

4)按列抽取文本cut和合并文件paste

  • cut [OPTION]... [FILE]...
    -d DELIMITER: 指明分隔符,默认tab(-d和分隔符之间可以没有空格)

    -f FILEDS:

    #: 第#个字段

    #,#[,#]:离散的多个字段,例如1,3,6

    #-#:连续的多个字段, 例如1-6

    混合使用:1-3,7

    -c 按字符切割 --output-delimiter=STRING指定输出分隔符

    cut -d: -f1 /etc/passwd

    cat /etc/passwd | cut -d: -f7

    cut -c2-5 /usr/share/dict/words

  • paste 合并两个文件同行号的列到一行
    -d 分隔符:指定分隔符,默认用TAB

    -s : 所有行合成一行显示

    paste f1 f2

    paste  -s f1 f2



二、文本分析工具

1)文本数据统计

wc:计数行总数、单词总数、字符总数(和字节总数),可以对文件或STDIN中的数据运行

wc story.txt

39   237   1901 story.txt

行数 字数 字符数

-l 只计数行数

-w 只计数单词总数

-c 只计数字节总数

-m 只计数字符总数

2)文本排序

sort:把整理过的文本显示在STDOUT(默认按照字符大小排序) 不改变原始文件

sort [options] file(s)
-r 执行反方向(由上至下)整理

-n 执行按数值大小整理

-f 选项忽略(fold)字符串中的字符大小写

-u 选项(独特,unique)删除输出中的重复行

-t  c 选项使用c做为字段界定符

-k  X 选项按照使用c字符分隔的X列来整理 能够使用多次

3)除重

uniq:从输入中删除重复的前后相接的行

uniq [OPTION]... [FILE]...

-c: 显示每行重复出现的次数

-d: 仅显示重复过的行

-u: 仅显示不曾重复的行:连续且完全相同方为重复

常和sort 命令一起配合使用: sort  userlist.txt  |  uniq -c

4)比较文件

diff:逐行比较两个文件之间的区别,

diff [OPTION]... [OLDFILE] [NEWFILE]  显示oldfile与newfile相比的不同和措施

diff foo.conf-broken foo.conf-works

5c5 (注明第5行有区别)

< use_widgets = no

---

> use_widgets = yes

-u 显示变化行的上下文,默认3行(适用于补丁文件)

diff  /PATH/TO/OLDFILE  /PATH/TO/NEWFILE  > /PATH/TO/PATCH_FILE

diff还可用于比较两个不同目录,显示其中每个文件的差别

patch:复制对文件改变(向文件打补丁)

patch -i /PATH/TO/PATCH_FILE  /PATH/TO/OLDFILE

patch  /PATH/TO/OLDFILE < /PATH/TO/PATCH_FILE

-b 选项来自动备份改变了的文件



三、grep及正则表达式

1)Linux上文本处理三剑客

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

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

sed:stream editor,文本编辑工具

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

2)grep: Global search REgular expression and Print out the line

作用::文本搜索工具,根据用户指定的“模式”对目标文 本逐行进行匹配检查;打印匹配到的行;     模式:由正则表达式字符及文本字符所编写的过滤条件

grep [OPTIONS] PATTERN [FILE...]

grep root /etc/passwd

grep [OPTIONS] PATTERN [FILE...] grep root /etc/passwd

命令选项:

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

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

-i: 忽略字符大小写

-n:显示匹配的行号

-c: 统计匹配的行数

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

-q: 静默模式,不输出任何信息 (配合echo $? 可用于写脚本)

-A #:after, 同时显示后#行

-B #: before, 前#行

-C #:context, 前后各#行

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

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

-w:整行匹配整个单词

-E:使用ERE扩展的正则表达式

3)正则表达式

  • REGEXP:由一类特殊字符及文本字符所编写的模式,其中有 些字符(元字符)不表示字符字面意义,而表示控制或通配的功能
  • 程序支持:grep, vim, less,nginx等
  • 分两类: 基本正则表达式:BRE          扩展正则表达式:ERE
  • 元字符分类:字符匹配、匹配次数、位置锚定、分组

4)基本正则表达式

  • 字符匹配

    .   : 匹配任意单个字符

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

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

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

  • 匹配次数(默认工作于贪婪模式:尽可能长的匹配)

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

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

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

    \?:匹配其前面的字符0或1次

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

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

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

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

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

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

    ^:行首锚定,用于模式的最左侧(^root  以root开头的行)

    $:行尾锚定,用于模式的最右侧(root$  以root结尾的行)

    ^PATTERN$: 用于模式匹配整行(整行只有此PATTERN)

    ^$: 空行(空白字符也不包括)

    ^[[:space:]]*$ :空白行(空行或包含空白字符的行)

    单词:非特殊字符组成的连续字符(字符串)(包括数字,不包含特殊字符)

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

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

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

  • 分组及引用

    分组:\(  \):将一个或多个字符捆绑在一起,当作一个整体进 行处理,如:\(root\)\+
    注:分组括号中的模式匹配到的内容会被正则表达式引擎记录 于内部的变量中,这些变量的命名方式为: \1, \2, \3, ...

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

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

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

    \2: string2

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



四、egrp及扩展的正则表达式

1)egrep

egrep = grep -E

egrep [OPTIONS] PATTERN [FILE...]

2)扩展正则表达式

  • 字符匹配(同基本正则表达式)
  • 次数匹配

    *:匹配前面字符任意次

    ?: 0或1次

    +:1次或多次

    {m}:匹配m次

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

    {0,n}   {m,}

  • 位置锚定(同基本正则表达式)
  • 分组

    ()

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

  • 或者

    a|b

    C|cat: C或cat

    (C|c)at:Cat或cat

3)fgrep

不支持正则表达式元字符:当无需用到元字符去编写模式时,使用fgrep更好

时间: 2024-11-07 00:19:27

DAY7:文本处理工具及正则表达式的相关文章

grep文本查看工具及正则表达式

grep文本查看工具及正则表达式 grep:搜索及过滤文本工具: (根据用户所指定的"模式"搜索,过滤条件"对目标文件进行过滤性匹配):grep自带正则表达式引擎工具. 所谓模式:由正则表达式所得元字符及普通文本字符所编写出来的过滤条件"模式" grep:三种支持模式: grep:基本正则表达式 egrep:支持扩展正则表达式 fgrep :不支持正则表达式 三种支持模式因其可以(grep -E:切换扩展,egrep-G:切换基本,分别有以-F切换fgre

Linux篇 | 文本处理工具和正则表达式 (一)

文本处理工具和正则表达式 如果用一句话形容Linux系统,我想就是"一切皆文件"在适合不过了.系统的服务.软件.日志.命令的输出结果都是基于文本的,所以我们很有必要知道Linux的常用的文本处理工具有哪些?而且,我们用的这些处理文本工具都离不开一个技术:"正则表达式",它不止适用于Linux,对于一些语言,如Java.Python都能用,甚至Windows系统里也能用正则表达式.那么,如何灵活的运用正则表达式就是这篇博客的意义. 一.文本处理工具 1.抽取文本的工具

Linux篇 | 文本处理工具和正则表达式(二)

文本处理工具和正则表达式 Linux文本处理三剑客 grep:文本过滤(模式:pattern)工具 >grep, egrep, fgrep(不支持正则表达式搜索) sed:stream editor,文本编辑工具 awk:Linux上的实现gawk,文本报告生成器 本篇主要讲述grep 一.grep 作用:文本搜索工具,根据用户指定的"模式"对目标文本逐行进行匹配检查:打印匹配到的行.(模式就是"正则表达式") 模式:由正则表达式字符及文本字符所编写的过滤条件

文本处理工具和正则表达式

文本处理工具和正则表达式: 文本查看工具: 1,less,more 查看命令的执行的结果.区别在于less查看命令的执行结果,可以向上和向 下翻页,而more仅可以向下翻页 2,head 从文件的开始查看内容,默认是显示10行 3,tail 从文件尾部查看内容,默认是显示10行 4,cut 截取命令的执行结果,不过cut属于列截取 5,rev 倒置命令的显示结果 6,tac,cat 查看文件内容 分析文本工具: 1,sort sort是对文本中的内容进行排序,它的排序的速度比其他命令的速度要快

文本处理工具和正则表达式、shell脚本编程基础-第四周

第四周-文本处理工具和正则表达式.shell脚本编程基础1. 统计出/etc/passwd文件中其默认shell为非/sbin/nologin的用户的个数,并将用户都显示出来grep -v '/sbin/nologin' /etc/passwd|wc -lgrep -v '/sbin/nologin' /etc/passwd|cut -d: -f12. 查出用户UID最大值的用户名,UID及shell类型.cut -d: -f1,3,7 /etc/passwd|sort -t: -k2 -nr

文本处理工具与正则表达式、grep

一.文本处理工具 1.文本查看命令 cat [OPTION]- [FILE]- -n 显示行号 -b 空格行不加行号,有字符的行才加 -s  相邻的空行压缩为一行,长和-n联用 -v 处理windows中的^M -T 可以看到tab\space -A  显示所有控制符(包括windows文本中的^M,^T) -E  显示行结束符$ (回车) tac [OPTION]- [FILE]-  将每个指定文件按行倒置并写到标准输出. 效果与cat 相反 rev  将指定文件从最后一个字符开始显示到第一个

文本管理工具及正则表达式的元数据总结

1.cat命令 功能: 显示文本内容,连接合并文本内容并在标准设备上输出 语法: cat [OPTION]... [FILE]... 选项: -E:显示行结束符(回车)$ -A:显示所有控制符,相当于-vET -n:对显示出的每一行进行编号 -b:对非空白行编号 -s:将连续的空行压缩成一行 -T:把TAB字符显示为^I -v:除了 LFD 和 TAB 之外所有控制符用 ^ 和 M- 记方式显示 示例: 查看/etc/issue文件内容 [[email protected] ~]# cat /e

关于 文本处理工具、正则表达式、grep 的简单举例

文本处理工具 抽取文本的工具 文件内容:less和cat 文件截取:head和tail 按列抽取:cut 按关键字抽取:grep 文件查看命令:cat,tac,rev cat [选项] [file] cat -n     对显示出的每一行进行编号 cat -b     非空行编号 cat -ns    连续压缩空行成一行 cat -v     显示回车符 cat -E     显示行结束符$ cat -A     显示所有控制符 tac file   反向显示内容 rev file   反向显示

grep文本搜索工具与正则表达式

一.文本搜索工具grep (一)grep简介 Linux上常用的三个文本处理工具被人们称为Linux文本处理三剑客,他们分别是: 1.grep(egrep,fgrep):文本搜索工具,基于"pattern"对给定的文本进行搜索操作. 2.sed:stream editor,流编辑器,行编辑工具,文本编辑工具. 3.awk:GNU awk,文本格式化工具,文本报告生成器. 他们都是很优秀的文本处理工具.现在,我就重点介绍下grep. grep:global search regular