shell编程:sed - 流编辑器(3)
目录
插入命令(i、a、c)
(1)在第 2 行前插入文本
(2)在第 2 行后追加文本
(3)替换第 2 行内容
(4)在匹配行前插入
插入命令(i、a、c)
(1)在第 2 行前插入文本
在第 2 行前插入文本:sed '2i\This is inserted line' file.txt
详细解释:
• 2:地址,第 2 行
• i:insert,在指定行前插入
• \:续行符,后跟要插入的文本
• 插入文本在新行
这些 sed 的匹配全是在引号里面的,这叫匹配命令,要持久化修改的话要在匹配命令即引号引起
来的外面加 -i 选项
(2)在第 2 行后追加文本
在第 2 行后追加文本:sed '2a\This is appended line' file.txt
详细解释:
• a:append,在指定行后追加
sed 是流式的,它是对行进行处理,append是在指定的行后加内容
• 与 i 相反,a 在行后添加
比如在第2行进行操作,i 是找第一个 \n ,找到后添加内容,a 是找第二个 \n ,找到后在添加内
容。实际上 i 和 a 都是查找 \n 选项,但是 \n 不输出,它是内部的一个表示换行的换行符,在内存
看来都是二进制的,如在 file.txt 文件中看到的几行内容在内存中就是连续保存的
• 文本在新行
(3)替换第 2 行内容
替换第 2 行内容:sed '2c\This replaces line 2' file.txt
详细解释:
• c:change,替换整行内容
• 整个第 2 行被替换为指定文本
• 不是插入或追加
(4)在匹配行前插入
在包含'pattern'的行前插入:sed '/pattern/i\--- INSERTED BEFORE PATTERN ---' file.txt
详细解释:
• /pattern/:模式地址,匹配包含"pattern"的行
匹配的时候是找每行的第一个匹配项
• i:在匹配行前插入
• 插入分隔线用于标识