sed 是 Linux 中非常强大的文本处理工具,可用于在匹配行前后追加内容、插入新行、替换、写入文件等。
以下是与 追加内容(append / insert / read) 相关的常用语法说明:
一、常用追加命令
a(append):在匹配行 后面 追加新行i(insert):在匹配行 前面 追加新行r(read):读取指定文件内容并追加到匹配行 后面w(write):把匹配行写入到指定文件^:行首$:行尾s命令分隔符不必是/- 如:
s:aaa:bbb:或s#aaa#bbb#都可以
- 如:
二、示例代码
以下是整理后的所有示例,便于直接复制使用。
1. 修改 SSH 默认端口
Debian
sed -i 's/#Port 22/Port 1066/' /etc/ssh/sshd_config
sed -i 's/Port 22/Port 1066/' /etc/ssh/sshd_config
Ubuntu
sed -i 's/Port 22/Port 1066/' /etc/ssh/sshd_config
2. 在文件首行插入内容
在 1.sh 第一行插入 666666:
sed -i "1i 666666" 1.sh
3. 在文件末尾追加内容
在 1.sh 文件最后一行追加 666:
sed -i '$a 666' 1.sh
4. 追加包含斜杠 / 的内容
sed 默认使用 / 作为分隔符,因此插入含 / 的内容时推荐换分隔符,例如:
方法一:使用不同分隔符
例如使用 #:
sed -i '$a RSAAuthentication yes' /etc/ssh/sshd_config
如果你希望追加带斜杠的内容:
sed -i '$a /RSAAuthentication yes/' /etc/ssh/sshd_config
(a 本身不会冲突,因此不需要转义分隔符)
三、重点技巧总结
| 命令 | 作用 |
|---|---|
a |
在匹配行后追加 |
i |
在匹配行前追加 |
r |
将文件内容追加到匹配行后 |
w |
将匹配行写入文件 |
^ |
行首 |
$ |
行尾 |
s |
替换命令,分隔符可自定 |