sed是可以增删查改的命令,sed的简单使用:
-e<script文件> 以选项中的script文本来处理输入的文本文件
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-n或--quiet或--silent 仅显示script处理后的结果
-i 此选项会直接修改源文件,要慎用。
(1)记住常用的几个关键字:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
举例说明:
[tangtao@localhost ~]$ cat file
123
abc
test
(1) sed -n 2p testfile //打印第二行,行数从1开始,第一行不计入计数
[tangtao@localhost ~]$ sed -n 2p file
abc
[tangtao@localhost ~]$
(2)sed -i 2a/add_test testfile //第二行后面加入adb
[tangtao@localhost ~]$ sed -i 2a\add_test file
[tangtao@localhost ~]$ cat file
123
abc
add_test
test
(3)sed -i 2d testfile //删除第二行
[tangtao@localhost ~]$ cat file
123
add_test
test
[tangtao@localhost ~]$ sed -i 2d file
[tangtao@localhost ~]$ cat file
123
test
(4) 数据的搜寻并替换:sed -i 's/old/new/g' file
[tangtao@localhost ~]$ cat file
123
test
[tangtao@localhost ~]$ sed -i 's/123/abc/g' file
[tangtao@localhost ~]$ cat file
abc
test
-e和 -n和-i的区别:
[tangtao@localhost ~]$ cat file
123
abc
[tangtao@localhost ~]$ sed -n 2a\test file
test
[tangtao@localhost ~]$ cat file
123
abc
[tangtao@localhost ~]$ sed -e 2a\test file
123
abc
test
[tangtao@localhost ~]$ cat file
123
abc
[tangtao@localhost ~]$ sed -i 2a\test file
[tangtao@localhost ~]$ cat file
123
abc
test
总结: 一般都是无改变用sed -n/-e ,有改变用sed -i(并且要慎用)
-n 只显示处理后的结果,-e会显示全部,但是他们都不会改写file的内容,而-i会改变文件的内容