sed 命令
· 阅读需 2 分钟
sed 可以在不打开编辑器的情况下,对文件进行精准的增删改。
sed -i
替换
sed -i 's/旧/新/g' path: /s 表示替换, /g 表示全局匹配
# 全局替换
sed -i 's/listen 80/listen 8080/g' nginx.conf
# 只替换 10-20 行之间的内容
sed -i '10,20s/listen 80/listen 8080/g' nginx.conf
# 指定 # 作为分隔符
sed -i 's#/var/log/nginx#/data/logs/nginx#g' docker-compose.yml
删除
/d 删除整行
# 删除包含 DEBUG 字符的行
sed -i '/DEBUG/d' application.log
# 删除第 5 行
sed -i '5d' application.log
# 删除从第 5 行到文件末尾(用$表示)
sed -i '5,$d' application.log
# 删除所有空行
sed -i '/^$/d' application.log
注释
'/搜索模式/s/旧/新/':先找到包含特定字符串的那一行,然后只在这一行内执行替换操作
# 将包含 "PasswordAuthentication" 的行注释掉
sed -i '/PasswordAuthentication/s/^/# /' /etc/ssh/sshd_config
# 开启系统 IP 转发(常用于 VPN 或 K8s 节点配置)
sed -i '/net.ipv4.ip_forward/s/^#\s*//' /etc/sysctl.conf