sed 流编辑:改配置不用打开编辑器
【摘要】 很多新手改配置文件第一反应是 vi 打开、慢慢找、慢慢改。文件大一点、服务器多一点,这套流程就很慢。sed 是 Linux 自带的流编辑器:不打开文件,直接按规则改,改完立刻生效,特别适合批量改配置、写脚本。 先看一眼,再动手改sed 默认把结果打到屏幕,不改原文件。先用这个模式确认规则写对了,再加 -i 真改:# 把监听端口 8080 换成 9090,只看结果不改文件sed 's/8080...
很多新手改配置文件第一反应是 vi 打开、慢慢找、慢慢改。文件大一点、服务器多一点,这套流程就很慢。sed 是 Linux 自带的流编辑器:不打开文件,直接按规则改,改完立刻生效,特别适合批量改配置、写脚本。
先看一眼,再动手改
sed 默认把结果打到屏幕,不改原文件。先用这个模式确认规则写对了,再加 -i 真改:
# 把监听端口 8080 换成 9090,只看结果不改文件
sed 's/8080/9090/' app.conf
# 确认无误后,原地修改
sed -i 's/8080/9090/' app.conf
s/旧/新/ 是最常用的替换语法。默认只换每行第一个匹配,想换整行所有匹配加 g:
sed -i 's/debug=false/debug=true/g' app.conf
三个真实场景
1. 批量改一排服务器的配置。 配合循环,不用逐台登录去 vi:
for h in web01 web02 web03; do
ssh $h "sed -i 's/max_conn=100/max_conn=500/' /etc/app.conf"
done
2. 注释掉一行危险配置。 在行首加 #,比删掉更安全,出问题随时恢复:
sed -i 's/^permit_root_login yes/#permit_root_login yes/' sshd_config
3. 只改某一行。 前面加行号,避免误伤其他同名配置:
# 只改第 12 行的端口
sed -i '12s/8080/9090/' app.conf
两个容易踩的坑
第一,替换内容里有斜杠会和分隔符冲突。改路径时换个分隔符,比如用 |:
sed -i 's|/var/log/app|/data/logs/app|g' app.conf
第二,-i 是原地修改,改错了没有后悔药。重要文件先备份,或者用 -i.bak 自动留一个备份:
sed -i.bak 's/8080/9090/' app.conf
# 改完多出一个 app.conf.bak,确认无误后再删
小结
sed 的核心就一条:先不加 -i 看效果,确认对了再真改。配合 grep 先定位、再用 sed 改,是日常运维里最省事的组合:定位靠 grep,动手靠 sed,批量靠脚本。把这三步练熟,改配置就不再需要一台台登录去翻编辑器了。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)