sed [-nef] [动作]
-n : 使用安静(silent)模式,在一般sed的用法中,所有来自stdin的数据一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或操作)才会被列出来;
-e : 直接在命令行模式上进行sed的操作编辑;
-f : 直接将sed的操作写在一个文件内,-f filename则可以执行filename内的sed操作;
-r : sed的操作使用的是扩展型正则表达式的语法。(默认是基础正则表达式语法)
-i : 直接修改读取的文件内容,而不是由屏幕输出。
操作说明(如sed ‘2,5d’,操作得用’ '包裹起来使用):[n1[,n2]]function
n1,n2 : 不见得会存在,一般代表【选择进行操作的行数】,举例来说,如果我的操作是需要在10到20行之间进行的,则【10,20[操作行为]】;
function有下面这些东西:
a : 新增,a的后面可以接字符,而这些字符会在新的一行出现(目前的下一行);
c : 替换,c的后面可以接字符,这些字符可以替换n1,n2之间的行;
d : 删除,因为是删除,所以d后面通常不接任何东西;
i : 插入,i的后面可以接字符,而这些字符会在新的一行出现(目前的上一行);
p : 打印,亦即将某个选择的数据打印出来,通常p会与参数sed -n一起运行;
s : 替换,可以直接进行替换的工作,通常这个s的操作可以搭配正则表达式,例如1,20s/old/new/g就是。
代码语言:javascript复制sed -n ' /is/p' 1.txt 在1.txt中查找is
sed -n '/t[ae]st/p' 1.txt == grep 't[ae]st' 1.txt
sed -n '/^[a-z]/'p 1.txt ===grep '^[a-z]' 1.txt 以小写字母开头
sed -n '/!$/'p 1.txt ==grep '!$' 1.txt 以!结尾
sed -n '/g..d/'p 1.txt ==grep 'g..d' 1.txt
sed -n '/.$'p 1.txt 以.结尾
sed -n '/go{2}g/'p 1.txt
代码语言:javascript复制[root@192 ~]# cat -n 1.txt
1 统支持的所有变量
2 I love you
3 AAAABB
4 linux
[root@192 ~]# cat -n 1.txt | sed '2a this line is append'
1 统支持的所有变量
2 I love you
this line is append
3 AAAABB
4 linux
[root@192 ~]# cat -n 1.txt | sed '2i this line is append'
1 统支持的所有变量
this line is append
2 I love you
3 AAAABB
4 linux
[root@192 ~]# cat -n 1.txt |sed '2,3c this line is 2,3 line '
1 统支持的所有变量
this line is 2,3 line
4 linux
[root@192 ~]# cat -n 1.txt |sed '2,4d'
1 统支持的所有变量
[root@192 ~]# cat -n 1.txt |sed -n '2,4p'
2 I love you
3 AAAABB
4 linux
代码语言:javascript复制[root@192 ~]# sed -n '2p' 1.txt
I love you
[root@192 ~]# sed -n '$p' 1.txt
linux
[root@192 ~]# cat -n 1.txt | sed 's/i/I/' 只将第一个i替换为I s/i/I/g将所有i替换成I
1 统支持的所有变量
2 I love you
3 AAAABB
4 lInux
sed -n '/linux/=' 1.txt 打印1.txt中有Linux的行的行号
对同一文件进行多次修改的三种方法
代码语言:javascript复制1.-e
cat 1.txt |sed -e '' -e ''
2.cat 1.txt|sed ';'
3.cat file | sed '
s/old1/new1/
s/old2/new2/'