先准备一个1.txt,里面的内容如下:

[root@localhost] ~/w/a/sed$ cat 1.txt
1.txt
1.xtt
7.txt
888.txt
test
test01
test02
test666

使用sed命令时,最好先备份测试文件,以免文件内容缺失

 

一、增加文本内容

1)使用“a”追加文本到指定行后面,但只是写入内存,不修改真正的文本。(也就是说仅仅是打印到屏幕,文本内容并没有修改)

将“222222”追加到第二行后面,输入:sed "2a 222222" 1.txt

[root@localhost] ~/w/a/sed$ sed "2a 222222" 1.txt
1.txt
1.xtt
222222
7.txt
888.txt
test
test01
test02
test666

使用cat命令进行查看文本内容,可以发现“222222”没有真正追加到文本

[root@localhost] ~/w/a/sed$ sed "2a 222222" 1.txt
1.txt
1.xtt
222222
7.txt
888.txt
test
test01
test02
test666
[root@localhost] ~/w/a/sed$ cat 1.txt
1.txt
1.xtt
7.txt
888.txt
test
test01
test02
test666

 

2)使用“i”插入文本到指定行前面,但只是写入内存,不修改真正的文本。(也就是说仅仅是打印到屏幕,文本内容并没有修改)

输入:sed "2i 222222" 1.txt

[root@localhost] ~/w/a/sed$ sed "2i 222222" 1.txt
1.txt
222222
1.xtt
7.txt
888.txt
test
test01
test02
test666

使用cat命令进行查看,可以发现“222222”没有真正插入到文本

[root@localhost] ~/w/a/sed$ sed "2i 222222" 1.txt
1.txt
222222
1.xtt
7.txt
888.txt
test
test01
test02
test666
[root@localhost] ~/w/a/sed$ cat 1.txt
1.txt
1.xtt
7.txt
888.txt
test
test01
test02
test666

3)要想真正实现添加文本内容,需要在sed后面加上“-i”

把“222222”插入到第二行前,输入:sed -i "2i 222222" 1.txt

[root@localhost] ~/w/a/sed$ sed -i "2i 222222" 1.txt
[root@localhost] ~/w/a/sed$ cat 1.txt
1.txt
222222
1.xtt
7.txt
888.txt
test
test01
test02
test666
[root@lo

 

二、删除文本内容

1)删除单行文本内容

删除刚才添加的字符串“222222”那一行,输入:sed -i "2d" 1.txt

[root@localhost] ~/w/a/sed$ sed -i "2d" 1.txt
[root@localhost] ~/w/a/sed$ cat 1.txt
1.txt
1.xtt
7.txt
888.txt
test
test01
test02
test666

 

2)删除多行文本内容

比如我想删除1到3行的文本内容,输入:sed -i "1,3d" 1.txt

[root@localhost] ~/w/a/sed$ sed -i "1,3d" 1.txt
[root@localhost] ~/w/a/sed$ cat 1.txt
888.txt
test
test01
test02
test666

 

3)利用正则表达式删除指定文本内容

格式为:sed -i “/正则表达式/d”【文件名】

比如我想删除1.txt里的“888.txt”这一行,只需正则包含888即可,输入:sed -i “/888/d” 1.txt

[root@localhost] ~/w/a/sed$ sed -i "/888/d" 1.txt
[root@localhost] ~/w/a/sed$ cat 1.txt
test
test01
test02
test666

 

三、文本替换

格式为:sed -i “s#目标内容#替换内容#g”【文件名】

目标内容可以用正则表达式,替换内容不能使用正则表达式,g为全局替换,用不到可以省略。

将1.txt的“test”全部替换为“node”,

输入:sed -i "s#test#node#g" 1.txt

[root@localhost] ~/w/a/sed$ sed -i "s#test#node#g" 1.txt
[root@localhost] ~/w/a/sed$ cat 1.txt
node
node01
node02
node666

 

Logo

更多推荐