sed 操作
Linux sed 命令是利用脚本来处理文本文件。
sed 可依照脚本的指令来处理、编辑文本文件。
Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明:
- -e
动作说明:
- a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
- c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
- d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
- i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
- p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
- s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是啦 !
报错:sed: -e expression #1, char 2: expected \ after `a', `c' or `i'
# 增加内容信息
sed -e 4a\newLine testfile
以行为单位的新增/删除
将 testfile 的内容列出并且列印行号,同时,请将第 2~5 行删除!
$ nl testfile | sed '2,5d'
1 HELLO LINUX!
6 Taobao
7 Runoob
8 Tesetfile
9 Wiki
sed 的动作为 2,5d,那个 d 是删除的意思,因为删除了 2-5 行,所以显示的数据就没有 2-5 行了, 另外,原本应该是要下达 sed -e 才对,但没有 -e 也是可以的,同时也要注意的是, sed 后面接的动作,请务必以 '...' 两个单引号括住喔!
只要删除第 2 行:
nl testfile | sed '2d'
要删除第 3 到最后一行:
nl testfile | sed '3,$d'
在第二行后(即加在第三行) 加上drink tea? 字样
nl testfile | sed '2a drink tea'
如果是要在第二行前,命令如下:
nl testfile | sed '2i drink tea'
如果是要增加两行以上,在第二行后面加入两行字,例如 Drink tea or ..... 与 drink beer?
nl testfile | sed '2a Drink tea or ......\
drink beer ?'
每一行之间都必须要以反斜杠 \ 来进行新行标记。上面的例子中,我们可以发现在第一行的最后面就有 \ 存在
以行为单位的替换与显示
将第 2-5 行的内容取代成为 No 2-5 number 呢?
nl testfile | sed '2,5c No 2-5 number'
nl testfile | sed -n '5,7p'