sed提供了单字母命令 i 用来完成 插入 操作。
i是 insert 的首字母,后者是 插入 的意思。
我们这里说的插入 并不是在某行中间插入几个字符,而是在 符合条件的行之前面插入新行。
这个 插入 操作和我们之前学习的 追加命令 a 功能一样。
唯一的不同是 插入操作是在指定行之前插入一个新行,追加操作是在指定的行后面追加新行。
单字母命令 i 的语法格式如下
[address] i Insert text
苹果电脑自带的 sed 的只支持以下语法
[address]i\
Insert text
- address 是 行寻址,用于指定插入的位置。
- i 是插入命令
- Insert text 是要插入的新行
- 苹果电脑自带的 sed 的 i 后面跟着一个 正斜杠(),然后是一个 回车,然后才是要插入的数据
范例
范例开始前,我们先准备要用的数据,先在当前目录下新建一个文件 data.txt 内容如下
1) 小明,23岁,北京大学
2) 小红,22岁,清华大学
3) 小李,25岁,斯坦福大学
4) 小王,22岁,清华大学
5) 小刚,27岁,北京大学
6) 小英,21岁,哈佛大学
下面的命令,我们在第 4 行之前插入一条新数据 7) 小陈,22岁,哈工大
[www.ddkk.com]$ sed '4 i 7) 小陈,22岁,哈工大' data.txt
运行结果如下
1) 小明,23岁,北京大学
2) 小红,22岁,清华大学
3) 小李,25岁,斯坦福大学
7) 小陈,22岁,哈工大
4) 小王,22岁,清华大学
5) 小刚,27岁,北京大学
6) 小英,21岁,哈佛大
在文件开头插入新行
因为插入操作是在指定的行之前。如果我们将行指定为 1 ,那么就会在文件开头插入新行。
范例
下面的命令,我们在文件开头插入一条新数据 7) 小陈,22岁,哈工大
[www.ddkk.com]$ sed '1 i 7) 小陈,22岁,哈工大' data.txt
运行结果如下
7) 小陈,22岁,哈工大
1) 小明,23岁,北京大学
2) 小红,22岁,清华大学
3) 小李,25岁,斯坦福大学
4) 小王,22岁,清华大学
5) 小刚,27岁,北京大学
6) 小英,21岁,哈佛大学
插入多行
sed的 插入命令 允许插入多行。多行的之间的分隔符为 反斜杠(\) 。除了第一行外,其它行必须在独立的一行。
sed插入多行的语法格式为
[address] i
Insert text\
Insert text2\
Insert text3
范例
下面的范例,我们在最后一行前插入多行
[www.ddkk.com]$ sed '$ i \
7) 小陈,22岁,哈工大\
7) 小陈,22岁,哈工大\
7) 小陈,22岁,哈工大
' data.txt
运行结果如下
1) 小明,23岁,北京大学
2) 小红,22岁,清华大学
3) 小李,25岁,斯坦福大学
4) 小王,22岁,清华大学
5) 小刚,27岁,北京大学
7) 小陈,22岁,哈工大
7) 小陈,22岁,哈工大
7) 小陈,22岁,哈工大
6) 小英,21岁,哈佛大学