首页 > 代码库 > 正则表达式笔记 sed工具

正则表达式笔记 sed工具

[:alnum:] 代表英文大小写字符及数字,即0-9 A-Z a-z

[:alpha:] 代表任何英文大小写字符,即A-Z a-z

[:blank:] 代表空格键与TAB键

[:cntrl:] 代表键盘上面的控制案件,即包括CR LF TAB DEL等

[:digit:] 代表数字 0-9

[:graph:] 除了空格键与TAB键外其他的所有键

[:lower:] 代表小写字符 a-z

[:print:] 代表任何可以被打印出来的字符

[:punct:] 代表标点符号 即"‘;:!#$等

[:upper:] 代表大写字符 A-Z

[:space:] 任何会产生空白的字符 包括空格键和TAB

[:xdigit:] 代表十六进制的数字类型 包括0-9 a-f A-F 


                                    Sed工具

sed参数

-n 使用安静模式 一般数据都会被列出来到屏幕 加-n则值显示经过sed处理的行或者操作才被列出来。

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

-f 直接将sed动作写在一个文件内,-f filename则可以执行filename内的sed动作

-r sed的动作支持的是扩展性正则表达式的语法 默认是基础正则表达

-i 直接修改读取的文件内容,不是由屏幕输出

n1,n2 代表进行动作的行数,例如在第10-20行进行动作 则 10,20[动作行为]


a 新增,a的后面可以接字符串,这些字符串会在新的下一行出现

c 替换,c的后面可以接字符串,这些字符可以替换n1,n2之间的行

d 删除,后面不接参数

i 插入,i后面可以接参数 插入的字符串会在新的上一行出现

p 打印,打印出数据 通常和sen -n一起进行

s 替换,可以直接进行替换的工作,通常s搭配g

扩展正则表达式

+ 重复一个或者一个以上的前一个RE字符

? 零个或者一个的前一个RE字符

| 或者的意思。例如 grep "aa|ab"

() 找出组的字符串.例如 g(aa|ab)d

()+多个重复组的判断

范例一:将/etc/passwd的内容列出并且打印出行号 同时将2-5行删除

nl /etc/passwd | sed ‘2,5d‘

范例二:将第二行后添加一行为aaaa

 nl /etc/passwd | sed ‘2a aaaa‘

范例三:在第二行后加入两行 aa bb

nl /etc/passwd | sed ‘2a aa \

> bb‘

范例四:将2-5行内容替换为no 2-5 number

nl /etc/passwd | sed ‘2,5c no 2-5 number‘

范例五:仅列出文件内的5-7行

 nl /etc/passwd | sed -n ‘5,7p‘


部分数据的查找和替换功能

sed ‘s/要被替换的数据/新的数据/g‘

例:过滤出本机IP

ifconfig eth0 | grep "inet addr" | sed ‘s/^.*addr://g‘| sed ‘s/Bcast.*$//g‘

例:将aa每行的.替换为!

 sed -i ‘s/\.$/\!/g‘ aa



正则表达式笔记 sed工具