Linux三剑客之sed
《鸟哥的Linux私房菜》学习笔记之sed工具
sed是一个管道命令,可以分析标准输入。而且sed还可以将数据进行替换、删除、新增、选取特定行等功能
1、sed简单语法
sed [-nefr] [操作]
-n |
使用安静模式,在一般sed的用法中,所有来自stdin的数据一般都会被列 出到屏幕上,但如果加上-n后,则只有经过sed特殊处理的行才会被列出来 |
-e | 直接在命令行模式上进行sed的操作编辑 |
-f | 直接将sed的操作写在一个文件内,-f filename则可以执行filename内的sed操作 |
-r | sed的操作使用的是扩展型正则表达式的语法。默认是基础正则表达式语法 |
-i | 直接修改读取的文件内容,而不是由屏幕输出 |
n1,n2 | 选择进行操作的行数 |
a | 新增,a的后面接字符,这些字符会在新的一行出现,目前的下一行 |
c | 替换,c的后面接字符,这些字符可以替换n1,n2之间的行 |
d | 删除,因为是删除,所以d后面通常不接任何东西 |
i | 插入,i的后面接字符,这些字符会在新的一行出现,目前的上一行 |
p | 打印,亦即将某个选择的数据打印出来。通常p会与参数sed -n一起运行 |
s | 替换,通常这个s的操作可以搭配正则表达式,例如1,20s/old/new/g |
输入内容超过多行时,每一行之间都必须要以反斜杠【\】来进行新行的增加
2、扩展正则表达式
grep默认仅支持基础正则表达式,如果使用扩展正则可以使用grep -E或者egrep
+ |
重复【一个或一个以上】的前一个RE字符,查找god、good、goood等: egrep -n 'go+d' filename |
? |
【零个或一个】的前一个RE字符,查找gd,god这两个字符串: egrep -n 'go?d' filename |
| |
或,查找gd或good这两个字符: egrep -n 'gd|good' filename |
() |
找出群组字符串,查找glad或good这两个字符,其中g和d分别在这两个词的前后 egrep -n 'g(la|oo)d' filename |
()+ |
多个重复群组的判别,查找以A开头、C结尾、中间由多个xyz组成的字符串: egrep -n 'A(xyz)+C' filename |
鸟哥私房菜链接:http://linux.vbird.org/linux_basic_train/unit03.php