您的位置:首页 > 其它

12章 正规表示法与文件格式化处理

2017-08-21 09:22 169 查看

1、什么是正规表达式:

处理字符串的一种通用规则方法,以行为单位进行字符串处理。只要工具支持特殊表示法,就可以作为正规表述式字符串处理使用,如vi、grep、awk、sed。总结来说就是用一些特殊的字符来表示所需要处理的字符串,起到方便、快捷、高效的作用。

2、基本正规表达式语法

字符串的正规表示法:



对于正规表达 . * $ {} \ 特殊符号用法汇总:







对于扩展正规表达:+ ? | () ()+用法汇总



一些简单示例:

‘t[ae]st’:搜寻含有tast或者test的行。

‘[[^g]oo]’:搜寻oo且前面不含g的行。

‘[[:digit:]gg]’:搜寻gg前面有数字的行。

‘[[:digit:]]’:只含有数字的行。

‘^the’:列出行首是the的行。注意^在[]内是反选,外是行首的意思。

‘^$’:找出空白行。

.代表一定有一个任意字符,*代表重复前一个字符0或者无穷次

.* 就代表有0个或多个任意字符。

{}字符限定范围 ;’o{2}’连续找两个o;\跳出{在shell中的特殊作用 ;’go{2,5}g’ 找出g g之间2到5个o的字符。

3、grep

grep [-acinv] [-AB] [–color=auto] ‘char’ filename

以行为单位处理字符串,字符串进行对比,取出含有符合要求字符串所在的行。

-a: 将二进制文档以text档案方式去搜寻

-c:计算找到匹配字符串的次数

-i: 忽略大小写搜寻

-n:输出行号

-v:输出没有匹配字符串的行

-A:输出匹配字符串后多少行 -A3后三行

-B:输出匹配字符串前多少行 -B2前两行

–color=auto:关键字加颜色,默认,因为alias。

egrep -v ‘^$|^#’ t.txt找出不含有空白和首行是#的行。

4、sed

sed [-nefri] 动作

管线命令可以对standard input数据进行取代,删除,新增和截取特定行等功能。

选项和参数:

-n: silent模式,-n使得sed仅仅显示经过特殊处理的行。

-e: 直接在指令列模式进行sed动作编辑

-f: 将sed动作处理完后写入档案内,-f filename

-r: 使sed支持延伸语法

-i: 直接修改档案里面内容,不经过屏幕输出

-p: 打印处n1和n2指定的行,结合-n一起使用

动作说明:

通过 ’ [n1,[n2]]function ’ 代表执行动作,function是下面字符:

a: 指定行的下面增加a后面的字符

c: 用c后面的字符串取代n1和n2指定行

d: 删除n1和n2所指定的行

i: 指定行的上面增加i后面的字符

s: 取代工作 ‘1,20s/old/new/g’把1到20行的old取代为new

sed具体例子

cat /etc/passwd | sed ‘2,5d’ 删除passwd2到5行

cat /etc/passwd | sed ‘2,$d’ 删除passwd2到最后行

cat /etc/passwd | sed ‘2a #This is a test’ 在passwd第2行后一行添加#This is a test

cat /etc/passwd | sed ‘2a #This is a test’ 在passwd第2行前一行添加#This is a test

cat /etc/passwd | sed ‘2a #This is a test \ this ’ 在passwd第2行后一行添加两行,分别是#This is a test和this。增加行和行直接通过\连接。

cat /etc/passwd | sed ‘2,5c No 2-5’ 将passwd第2行到5行取代为No 2-5。

cat /etc/passwd | sed -n ‘2,5p’直接显示第2到5行

ifconfig ens33|grep ‘inet addr’ |sed ‘s/^.*addr://g’|sed ‘s/B.$’gerp出含有相应字符串的行,然后将行头到addr之间替换为空,和行内B到结尾之间替换为空;注意正规表示法。

cat /etc/man.config|grep ‘MAN’|sed ‘s/#.*¥//g’|sed ‘/^$/d’

¥=$

sed -i ‘$a this is’ text.txt在text行尾加上this is。这个属于直接修改文件里面内容。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐