文本处理

grep命令

grep命令:查找文件里符合条件的字符串正则表达式

grep函数用于在文件中查找能够与模式匹配的文本,并显示其所在行编辑器

grep函数的模式字符串即为基础正则表达式:函数

grep [-acinv] [-AB] [--color=auto] [mode] [file]

选项:spa

-a 将二进制文件当作文本文件处理命令行

-c 统计找到匹配的次数code

-i 忽略大小写xml

-n 输出匹配的行号blog

-v 反向查找,即输出不存在匹配的行ci

-A After,输出匹配的行后面全部行字符串

-B Before,输出匹配的行前全部行

--color=auto 将匹配的内容自动使用不一样颜色显示

基础正则表达式:

  • 特定字符串 直接使用单引号括起,特殊字符须要在前面加‘\’转义,解除其特殊功能。

  • 包含/不包含 某集合的元素

[字符集] 表明字符集中任意一个字符,在表达式中占一个字符的位置

[^字符集] 表明字符集不包含的任意一个字符,在表达式中占一个字符的位置

字符集的描述能够将全部元素写出,无需分隔符每一个字符即为一个元素(如:[abc])
也能够按照语系字符集的顺序写出(如在LANG=C下的[a-z]表示全体小写英文字母,或[a-z0-9]表示全体小写字母或者数字)

  • 行首行尾

Linux风格的文本,行首标记为“^”, 如'^a'表示第一个字符是a的行。行尾标记为“,z”,′z'表示最后一个字符为z的行

天然地,'^$'表示空行

  • 任意字符

.  任意单个字符,在表达式中占一个字符的位置

* 0至无穷个前一字符的重复,如'a*'表示a后面跟0至无穷个a组成的字符串。

.* 表示任意字符0至无穷次重复,它在正则表达式中表示任意字符串

扩展正则表达式:(grep不支持,使用egrep或grep -E):

+ 重复一个或一个以上的前一个字符,如a+

? 0个或一个的前一个字符, 如a?

| 逻辑或

(a|b) 组字符串,表明字符串a或字符串b

(|)+ 表示重复1次或以上的组字符串

 

Sed命令

sed命令:一种在线编辑器,它一次处理一行内容

sed是以行为单位的支持正则表达式的字符串处理命令

处理时,把当前处理的行存储在临时缓冲区中,称为'模式空间'(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并无改变,除非你使用重定向存储输出。

sed [-inefr] {处理命令/脚本文件} [处理文件]

 

选项:

-n 使用安静模式。若无此参数来自stdin的数据会所有输出到屏幕,若使用此参数则只有通过sed处理的行才会显示

-e 直接在命令行中输入处理命令

-f filename 添加脚本文件

-r 启用扩展正则表达式支持(默认支持基础正则表达式)

-i 直接将修改写入文件,默认将其输出到stdout。

处理命令 '[n1, [n2]]op str' n1,n2表示从n1到n2全部行(闭区间)做为当前行,op是操做符,str是操做符后所接的字符串

相关文章
相关标签/搜索