sed 实战:文本替换、插入删除与多文件处理
sed 是流编辑器,适合批量处理文本。
1. 替换操作
# 替换每行第一个 old 为 new
sed 's/old/new/' file.txt
# 替换所有(g)
sed 's/old/new/g' file.txt
# 替换并备份原文件(-i.bak)
sed -i.bak 's/error/warning/g' config.ini
# 使用不同分隔符(避免转义)
sed 's#/usr/local#/opt#g' paths.txt2. 删除操作
# 删除空行
sed '/^$/d' file.txt
# 删除包含特定字符串的行
sed '/pattern/d' file.txt
# 删除第2到5行
sed '2,5d' file.txt3. 插入与追加
# 在第3行后追加
echo 'new line' | sed '3a\new line' file.txt
# 在第3行前插入
echo 'new line' | sed '3i\new line' file.txt4. 范围与组合
# 在指定行范围内替换
sed '10,20 s/foo/bar/g' file.txt
# 多条命令(-e)
sed -e 's/foo/bar/g' -e '/^$/d' file.txt5. 多文件处理
# 批量修改所有 .conf 文件
find . -name "*.conf" -exec sed -i 's/port 80/port 8080/g' {} \;6. 高级:保持空间与模式空间
可参考手册,用于复杂替换,但通常用 awk 替代。
