Linxu 文本处理三剑客

回忆以前的内容:

* 表示:任意长度的任意字符

?表示:任意单个字符

[]表示:指定范围内的

[^]表示:指定范围外的

正则表达式:Regular EXPression,REGEXP

元字符:

. 表示:匹配任意单个字符

[] 表示:匹配指定范围任意单个字符

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

匹配次数(贪婪模式:尽可能长的匹配)

* 表示:匹配其前面的字符任意次

例子:a,b,ab,aab,acb,adb,amnb 问a*b能匹配到哪些字符串?

答:b,ab,aab

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

a.*b 表示匹配以a开头,以b结尾的任何字符串。

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

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

\{m\}表示:匹配其前字符m次

文本查找

grep,egrep, fgrep

grep:根据模式,搜索文本,将符合模式的文本行显示出来。

Patten:文本字符和正则表达式的元字符组合而成的匹配条件

剑客一:grep

grep [OPTIONS] PATTERN [FILE...]

Option:-i  忽略大小写

--colour 匹配出的字符,用颜色高亮显示

-v 反向匹配,显示没有被匹配的行

-o  只显示被模式匹配到的字符串

-E 使用扩展正则表达式

-A #

-B #

-C #

例子:

例子:

位置锚定:

^ 表示:锚定行首,此字符后面的任意内容必须出现在行首

$ 表示:锚定行尾,此字符后面的任意内容必须出现在行尾

例子:找出/etc/passwd下以w结尾的行

grep ‘w$’/etc/passwd

找出/etc/passwd 下以b开头以h结尾 切出现在行胃尾的行

grep ‘b..h$’/etc/passwd

^$ 表示:空白行

例子:统计/etc/inittab 下有多少空白行

grep ‘^$’ /etc/inittab | wc -l

找出/etc/inittab下以数字结尾的行

grep ‘[[:digit:]]$’/etc/inittab

\<或\b 表示:锚定词首,其后面的任意字符必须作为单词首部出现

\>或\b 表示:锚定词尾,其后面的任意字符必须作为单词尾部出现

\<root\> 表示:精确匹配某个单词

分组:

\(\)

\(ab\)*  表示ab作为一个整体出现0次到无限次

例子:

正则表达式:

分为:Basic REGEXP  基本

Extended REGEXP  扩展

扩展正则表达式:

字符匹配:

.  指:匹配任意单个字符

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

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

次数匹配:

* 表示:匹配其前面的字符任意次

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

+ 指:匹配其前面的字符至少一次,相当于\{1,\}

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

位置锚定,分组同正则表达式

或者:

|  表示:或者,or

a | b a或b有一个就行

C | cat 表示: C 或 cat

找出组字符串 ()

例子  找出含有glad和good的行,使用或|

egrep -n ‘g(la|oo)d‘ regular_express.txt

多个重复组的判断()+

将 AxyzxyzxyzxyzC 用echo显示

echo "AxyzxyzxyzxyzC" | egrep‘A(xyz)+C‘   这行命令的意思就是找出开头是A结尾是C,中间有1个或多个xyz的字符串

命令:grep - E = egrep

扩展正则表达式直接就用不要转义符

基本的 \? \+ \(\)

扩展的+ ()

剑客二:sed

sed命令是一种在线编辑器,一次处理一行内容。原理:把当前处理的行存储在临时缓冲区(模式空间pattern  space)中,sed命令处理缓存区中的内容,处理完成之后,把缓冲区的内容发送的屏幕;然后处理下一行,直到文件的末尾。文件内容没有改变,除非使用重定向输出。sed主要用于自动编辑一个或多个文件;简化文件的反复操作。

sed命令格式

sed [-nefr] [动作]

-n 使用安静模式,只有被sed匹配到的行才被显示出来。即,取消默认的输出

-e 直接在命令行模式进行sed动作编辑

-f 将sed动作写入一个文件内。-f filename 可以运行filename内的sed动作

-r 支持延伸型正规表示法

-i 直接修改读取的文件内容

命令:

d:除

p:显示模式空间中的内容。与-n配合使用,打印匹配的行

a \text:在行后面追加文本,支持使用\n实现多行追加

i \text:在行前面追加文本,支持使用\n实现多行追加

c \text:替换行为单行或多行文本

w /path/to/somefile 保存模式空间匹配到的行到指定文件中

r /path/from/somefile 读取指定文件的文本流到模式空间中的行后

= 为模式空间中的行打印行号

!取反条件

s/// 查找替换,支持使用其他分隔符,[email protected]@@,S###

替换标记:

g 全局替换

p 显示替换成功的行

w /PATH/TO/SOMEFILE 将替换成功的结果保存到文件

例子:

d命令:

1.删除文件/etc/passwd的第二行

2.删除第5到10行

[[email protected]~]# nl /etc/passwd | sed ‘5,10d‘

3.删除最后一行

[[email protected]~]#nl /etc/passwd | sed ‘$d‘

4.删除所有含有root的行

[[email protected]~]# nl /etc/passwd | sed ‘/root/d‘

s命令

1.&表示被sed找到的部分,然后在后面加入要替换的内容

2.把test替换为mytest

3. [[email protected]~]# sed -n ‘[email protected]\(love\)[email protected]\[email protected]‘ test.txt

love被标记为1,所有的loveable都被替换为loveer,被替换的行会被打印出来。

4.把模板test和Test之间的行,每行的末尾加上zhou

e命令,多点编辑

1.-e命令允许在同一行里执行多条命令。下面这条命令,先删除test.txt文件的第1到5行,把test替换为check

sed -e ‘1,5d‘ -e ‘s/test/check/‘test.txt

2.- -expression可以给sed表达式直接赋值

sed --expression=‘s/test/check/‘ --expression=‘/love/d‘

写入命令:w

下图是,向test1.txt文件中写入含有test的行。注意:不是追加,是覆盖写入

从文件读入,r

下图是:从test1.txt中读入含有test的行

追加命令,a在匹配行的下一行追加

插入命令,i 在匹配行的上一行追加

时间: 2024-10-10 00:24:05

Linxu 文本处理三剑客的相关文章

文本处理三剑客之-sed基础用法

文本处理三剑客: grep,egrep,fgrep:文本过滤器 sed:stream EDitor:流编辑器,行 awk:文本格式化工具,报告生成器 sed [OPTION]...'script' [input-file]      script:地址定界编辑命令                [option]           -n:不输出模式空间中的内容至屏幕           -e:多点编辑           -f /path/to/sed_script_file:         

文本处理三剑客之sed

文本处理三剑客之sed sed概述 sed使用示例 sed的高级应用 sed概述 sed, 作为文本三剑客之一,其定位就是一个编辑器, 而且sed是一个流式编辑器(stream editor),其主要功能是过滤和转换文本. sed - stream editor for filtering and transforming text 作为一个强大的文本处理功能,sed 自然能够配合正则表达式,另外,所谓流编辑器,sed 是逐行地读取文本,在文本行中应用指定的命令,且默认输出到stdout; se

linux文本处理三剑客之grep

  一.linux文本处理三剑客介绍 linux中文本三剑客包括grep(egrep,fgrep),sed,awk,三者基本的功能如下: 工具名称 功能 grep,egrep,fgrep 文本过滤工具(搜索工具) sed stream editor, 流编辑器:文本编辑工具 awk 文本报告生成器 二.grep工具详解 1.grep的介绍: grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行

文本处理三剑客之sed(流编辑器)

文本处理三剑客之sed(流编辑器) - 行编辑器 把当前处理的行存储在临时缓冲区,称为模式空间,然后把模式空间的内容送往屏幕,一行一行的处理,主要用来编辑一个或者多个文件. - 用法 sed [option]... 'script' inputfile... ###### - 常用选项 -n:不输出模式空间内容到屏幕,即不自动打印 默认会打印模式空间的内容加-n 可以只显示需要打印的行 [root@localhost home]# sed -n '2,3p' /etc/passwd bin:x:

谢烟客---------Linux之文本处理三剑客之grep

Linux之文本处理三剑客介绍 awk 名称得自于它的创始人阿尔佛雷德·艾侯.彼得·温伯格和布莱恩·柯林汉姓氏的首个字母,它具备了一个完整的语言所应具有的几乎所有精美特性,AWK是一个解释器,三位创建者已将它正式定义为"样式扫描和处理语言".它允许您创建简短的程序,这些程序读取输入文件.为数据排序.处理数据.对输入执行计算以及生成报表,还有无数其他的功能.Linux使用的是Gnu版本的AWK,gawk grep 全称"Global search REgular express

Linux文本处理&quot;三剑客&quot;--grep

稍微接触过linux都会知道有三个非常强大文本处理工具,那就是grep.sed和awk,想必都有听说过吧. Linux文本处理三剑客: grep, egrep, fgrep:文本过滤工具(模式:pattern): grep:基本正则表达式,支持-E,-F egrep:扩展正则表达式, 支持-G,-F fgrep:不支持正则表达式, sed:stream editor, 流编辑器:文本编辑工具: awk:Linux上的实现为gawk,文本报告生成器(格式化文本): 以上三款工具都支持正则表达式 正

文本处理三剑客之-sed

1.文本处理三剑客-sed #sed语法: sed  [OPTION]...  {script-only-if-no-other-script}        [input-file]... sed理解:是一种流编辑器,一次处理一行内容,处理时把当前处理的行存储在临时缓存中,成为"模式空间",接着用sed命令处理缓冲区的内容,处理完毕后吧缓冲区内容输出到屏幕接着处理下一行.这样不断重复到末尾.文件内容并没有改变.除非使用重定向输出才会改变内容. 常用选项 -n 不输出模式空间到屏幕 -

文本处理三剑客之grep

文本处理三剑客之grep 正则表达式(regex) 文本处理工具 grep egrep 试验环境:CentOS 7.2 正则表达式 Linux的哲学之一"一切皆文件",学习Linux应得掌握其基本的文本处理工具,这些工具主要包括: 文件内容:less和cat 文件截取:head和tail 文件抽取:cut 关键字搜索:grep 正则表达式是计算机科学中的一个概念,又称作regex或RE, 正则表达式诞生于对神经网络研究的需要,随着技术发展,正则表达式已经广泛应用于各个领域,其主要应用对

Linux文本处理三剑客之grep一族与正则表达式

一,grep一族是什么? Linux上有三种常用的文本处理工具,分别为:grep(egrep.fgrep).sed.awk.这三者被称为Linux文本处理三剑客. grep一族:文本搜索工具 grep:支持使用基本正则表达式: egrep:支持使用扩展正则表达式,相当于grep -E: fgrep:不支持使用正则表达式,相当于grep -F; [PS:fgrep不需要加载正则表达式引擎,因此速度较快,fgrep的搜索效率在当文件达到几亿行时就能体现出来.(大型web网站一天的日志量都是几亿行的,