首页 > 代码库 > 正则表达式笔记 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工具